오답 이유매개변수화된 질의는 입력값을 SQL 구문이 아닌 데이터로 처리하게 하므로 대표적인 1차 방어다.
2
열 이름이나 정렬 방향처럼 바인딩할 수 없는 요소는 허용 목록에서 안전한 값으로 매핑한다.
오답 이유식별자와 정렬 방향 등은 일반적인 바인드 변수 위치가 아니므로 코드가 정한 허용 목록에 매핑하는 방식이 적절하다.
3
애플리케이션 DB 계정에는 업무에 필요한 최소 권한만 부여한다.
오답 이유최소 권한은 삽입 취약점이 발생하더라도 조회·변경 가능한 범위를 제한하는 심층 방어다.
4
사용자 입력의 작은따옴표만 치환한 뒤 SQL 문자열에 직접 이어 붙이는 방식을 기본 방어로 사용한다.
정답 근거일부 문자만 수동으로 치환하는 방식은 DB 문법·인코딩·문맥에 따라 우회될 수 있다. 입력을 SQL 문자열에 결합하는 구조를 유지하므로 기본 방어로 삼아서는 안 된다.
정답·상세해설
정답 4번
OWASP는 준비된 문장과 매개변수화된 질의를 우선 방어로 권고하고, 바인딩할 수 없는 동적 요소에는 허용 목록 매핑을 사용하도록 안내한다. 최소 권한은 피해 범위를 줄인다. 반면 작은따옴표만 치환해 문자열 결합을 계속하는 ④는 취약하고 DB 종속적이므로 권장되지 않는다.