쇼핑몰 프로젝트를 하던 중, 다음과 같은 오류가 발생하였다.

Caused by: java.lang.IllegalStateException: For queries with named parameters you need to provide names for method parameters; Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters

JPQL을 사용할 때, 발생되는 것으로 추정되었고, 당시의 나는 아래와 같은 레파지토리를 작성해뒀다.

@Query("SELECT new com.shop.dto.CartDetailDto(ci.id, i.itemNm, i.price, ci.count, im.imgUrl) " +
        "FROM CartItem ci, ItemImg im " +
        "JOIN ci.item i " +
        "WHERE ci.cart.id = :cartId " +
        "AND im.item.id = ci.item.id " +
        "AND im.repImgYn = 'Y' " +
        "ORDER BY ci.regTime DESC" )
List<CartDetailDto> findCartDetailDtoList(Long cartId);

검색 결과로는 @Param을 설정해라는 방식과 옵션에서 -parameters를 추가해라는 방식이 있었는데, 후자의 방법은 개인적으로 환경이 바뀌면 또 같은 상황이 일어나기 때문에 옳지 않다고 판단하였다.
@Param을 쓰는 방식으로 아래와 같이 수정하였다.

@Query("SELECT new com.shop.dto.CartDetailDto(ci.id, i.itemNm, i.price, ci.count, im.imgUrl) " +
        "FROM CartItem ci, ItemImg im " +
        "JOIN ci.item i " +
        "WHERE ci.cart.id = :cartId " +
        "AND im.item.id = ci.item.id " +
        "AND im.repImgYn = 'Y' " +
        "ORDER BY ci.regTime DESC" )
List<CartDetailDto> findCartDetailDtoList(@Param("cartId")Long cartId);

이후, IllegalStateException이 발생하지 않게 되었다.

보안 요소

소프트웨어 개발에 있어 충족시켜야할 요소 및 요건을 의미한다.

 

보안 3대 요소

  • 기밀성(Confidentiality) : 시스템 내의 정보와 자원은 인가된 사용자에게만 접근이 허용됨
  • 무결성(Integrity) : 시스템 내의 정보는 오직 인가된 사용자만 수정할 수 있음
  • 가용성(Availability) : 인가받은 사용자는 언제라도 사용할 수 있음

보안 3대요소 외의 보안 요소

  • 인증(Authentication) : 시스템 내의 정보와 자원을 사용하려는 사용자가 합법적인 사용자인지를 확인하는 모든 행위
  • 부인 방지(NonRepudiation) : 데이터를 송 ・ 수신한 자가 송 ・ 수신 사실을 부인할 수 없도록 송 ・ 수신 증거를 제공함

'CS' 카테고리의 다른 글

OSI 7계층별 프로토콜  (0) 2024.04.24
입력 데이터 검증 및 표현의 보안 약점  (0) 2023.02.16
C언어의 대표적인 표준 라이브러리  (0) 2023.02.16
소프트웨어 개발 프레임워크  (0) 2023.02.16
프로토콜의 종류  (0) 2023.02.16

입력 데이터 검증 및 표현의 보안 약점

  • SQL 삽입(SQL Injection) : 웹 응용 프로그램에 SQL을 삽입하여 내부 데이터베이스(DB) 서버의 데이터를 유출 및 변조하고, 관리자 인증을 우회하는 보안 약점
  • 경로 조작 및 자원 삽입 : 데이터의 입 ・ 출력 경로를 조작하여 서버 자원을 수정 ・ 삭제할 수 있는 보안 약점
  • 크로스사이트 스크립팅(XSS : Cross Site Scripting) : 웹페이지에 악의적인 스크립트를 삽입하여 방문자들의 정보를 탈취하거나, 비정상적인 기능을 수행을 유발하는 보안 약점
  • 운영체제 명령어 삽입 : 외부 입력값을 통해 시스템 명령어의 실행을 유도함으로써 권한을 탈취하거나 시스템 장애를 유발하는 보안 약점
  • 위험한 형식 파일 업로드 : 악의적인 명령어가 포함된 스크립트 파일을 업로드함으로써 시스템에 손상을 주거나, 시스템을 제어할 수 있는 보안 약점
  • 신뢰되지 않는 URL 주소로 자동접속 연결 : 입력 값으로 사이트 주소를 받는 경우 이를 조작하여 방문자를 피싱 사이트로 유도하는 보안 약점
  • 메모리 버퍼 오버플로 : 연속된 메모리 공간을 사용하는 프로그램에서 할당된 메모리의 범위를 넘어선 위치에서 자료를 읽거나 쓰려고 할 때 발생하는 보안 약점

'CS' 카테고리의 다른 글

OSI 7계층별 프로토콜  (0) 2024.04.24
보안 요소  (1) 2023.02.16
C언어의 대표적인 표준 라이브러리  (0) 2023.02.16
소프트웨어 개발 프레임워크  (0) 2023.02.16
프로토콜의 종류  (0) 2023.02.16

C언어의 대표적인 표준 라이브러리

  • stdio.h
    • 데이터의 입 ・ 출력에 사용되는 기능들을 제공한다.
    • 주요 함수 : printf, scanf, fprintf, fclose, fopen 등
  • math.h
    • 수학 함수들을 제공한다
    • 주요 함수 : sqrt, pow, abs 등
  • string.h
    • 문자열 처리에 사용되는 기능들을 제공한다
    • 주요함수 : strlen, strcpy, strcmp 등
  • stdlib.h
    • 자료형 변환, 난수 발생, 메모리 할당에 사용되는 기능들을 제공한다.
    • 주요함수 : atoi, atof, srand, rand, malloc, free 등
  • time.h
    • 시간 처리에 사용되는 기능들을 제공한다.
    • 주요함수 : time, clock 등

'CS' 카테고리의 다른 글

보안 요소  (1) 2023.02.16
입력 데이터 검증 및 표현의 보안 약점  (0) 2023.02.16
소프트웨어 개발 프레임워크  (0) 2023.02.16
프로토콜의 종류  (0) 2023.02.16
프로세스 상태  (1) 2023.02.16

소프트웨어 개발 프레임워크

프레임워크(Framework)는 소프트웨어 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 손쉽게 구현할 수 있도록 여러 가지 기능들을 제공해주는 반제품 형태의 소프트웨어 시스템이다.

  • 주요기능
    • 예외 처리
    • 트랜잭션 처리
    • 메모리 공유
    • 데이터 소스 관리
    • 서비스 관리
    • 쿼리 서비스
    • 로깅 서비스
    • 사용자 인증 서비스 등
  • 스프링 프레임워크(Spring Framework) : 자바 플랫폼을 이용한 오픈 소스 경량형 애플리케이션 프레임워크로, 동적인 웹 사이트의 개발을 위해 다양한 서비스를 제공함
  • 전자정부 프레임워크 : 우리나라의 공공부문 정보화 산업 시 효율적인 정보 시스템의 구축을 지원하기 위해 필요한 기능 및 아키텍처를 제공하는 프레임워크로 개발 프레임워크의 표준 정립으로 응용 소프트웨어의 표준화, 품질 및 재사용성의 향상을 목적으로 함
  • 닷넷 프레임워크(.NET Framework) : Windows 프로그램의 개발 및 실행 환경을 제공하는 프레임워크로, Miscrosoft 사에서 통합 인터넷 전략을 위해 개발하였으며, 실행을 관리하는 CLR(Common Language Runtime, 공용 언어 런타임)이라는 이름의 가상머신 상에서 작동함

'CS' 카테고리의 다른 글

입력 데이터 검증 및 표현의 보안 약점  (0) 2023.02.16
C언어의 대표적인 표준 라이브러리  (0) 2023.02.16
프로토콜의 종류  (0) 2023.02.16
프로세스 상태  (1) 2023.02.16
IEEE 802의 주요 표준 규격  (0) 2023.02.16

프로토콜의 종류

  • TCP(Transmission Control Protocol) : 신뢰성 있는 연결형 서비스를 제공하고, 패킷의 다중화, 순서 제어, 오류 제어, 흐름 제어 기능을 제공함
  • FTP(File Transfer Protocol) : 컴퓨터와 컴퓨터 또는 컴퓨터와 인터넷 사이에서 파일을 주고받을 수 있도록 하는 원격 파일 전송 프로토콜
  • IP(Internet Protocol) : 데이터그램을 기반으로 하는 비연결형 서비스와 패킷의 분해/조립, 주소 지정, 경로 선택 기능을 제공
  • ARP(Address Resoultion Protocol) : 논리주소를 물리주소로 변환시켜주는 프로토콜

프로세스 상태

프로세스 상태 전이

  • 제출(Submit) : 작업을 처리하기 위해 사용자가 작업을 시스템에 제출한 상태
  • 접수(Hold) : 제출된 작업이 스풀 공간인 디스크의 할당 위치에 저장된 상태
  • 준비(Ready) : 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태
  • 실행(Run) : 준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태
  • 대기(Wait), 블록(Block) : 프로세스에 입 ・ 출력 처리가 필요하면 현재 실행 중인 프로세스가 중단되고, 입 ・ 출력 처리가 완료될 때까지 대기하고 있는 상태
  • 종료(Terminated, Exit) : 프로세스의 실행이 끝나고 프로세스 할당이 해제된 상태

프로세스 상태 전이 관련 용어

  • Dispatch : 준비 상태에서 대기하고 있는 프로세스 중 하나가 프로세서를 할당받아 실행 상태로 전이되는 과정
  • Wake Up : 입 ・ 출력 작업이 완료되어 프로세스가 대기 상태에서 준비 상태로 전이 되는 과정
  • Spooling : 입 ・ 출력장치의 공유 및 상대적으로 느린 입 ・ 출력장치의 처리 속도를 보완하고 다중 프로그래밍 시스템의 성능을 향상시키기 위해 입 ・ 출력할 데이터를 직접 입 ・ 출력장치에 보내지 않고 나중에 한꺼번에 입 ・ 출력하기 위해 디스크에 저장하는 과정

'CS' 카테고리의 다른 글

소프트웨어 개발 프레임워크  (0) 2023.02.16
프로토콜의 종류  (0) 2023.02.16
IEEE 802의 주요 표준 규격  (0) 2023.02.16
교착상태와 교착상태 발생의 필요 충분 조건  (0) 2023.02.16
UNIX/LINUX 기본 명령어  (0) 2023.02.16
IEEE 802의 주요 표준 규격
규격 정의
802.1 전체의 구성, OSI 참조 모델과의 관계, 통신망 관리 등에 대한 규약
802.2 논리 링크 제어(LLC) 계층에 관한 규약
802.3 CSMA/CD 방식의 매체 접근 제어 계층에 관한 규약
802.4 토큰 버스 방식의 매체 접근 제어 계층에 관한 규약
802.5 토큰 링 방식의 매체 접근 제어 계층에 관한 규약
802.6 도시형 통신망(MAN)에 관한 규약

'CS' 카테고리의 다른 글

프로토콜의 종류  (0) 2023.02.16
프로세스 상태  (1) 2023.02.16
교착상태와 교착상태 발생의 필요 충분 조건  (0) 2023.02.16
UNIX/LINUX 기본 명령어  (0) 2023.02.16
IPv6(Internet Protocol version 6)  (0) 2023.02.16

+ Recent posts