41. SQL Injection에 대한 가장 직접적인 예방 방법은?
정답·해설 펼치기
정답 1번 · 매개변수화된 쿼리(Prepared Statement)를 사용한다
파라미터 바인딩은 SQL 코드와 입력 데이터를 분리해 입력이 쿼리 문법으로 해석되지 않도록 합니다.
특수문자 몇 개만 제거하는 방식에 전적으로 의존하지 않습니다.
SQLi=쿼리 구조와 데이터 분리
5개 필기 영역별 문제를 먼저 이해하고 선택지·정답 근거·오답 함정·한 줄 기억을 확인하세요. 학습 후 CBT와 오답 복습으로 이어집니다.
콘텐츠 구분 · 실제 시험 기출 원문이 아니라 K-BOOKS가 제작한 연습문항입니다. 기존 자체 제작 연습문항 100개(과목별 20문항)를 제공합니다. 기존 정보통신·정보처리 CBT 데이터와 무관합니다.
검색 결과 100문항 · 5/10페이지 · 학습 완료 확인 중
정답 1번 · 매개변수화된 쿼리(Prepared Statement)를 사용한다
파라미터 바인딩은 SQL 코드와 입력 데이터를 분리해 입력이 쿼리 문법으로 해석되지 않도록 합니다.
특수문자 몇 개만 제거하는 방식에 전적으로 의존하지 않습니다.
SQLi=쿼리 구조와 데이터 분리
정답 4번 · 출력 문맥에 맞게 데이터를 인코딩한다
HTML·속성·JavaScript·URL 등 출력 문맥에 맞는 인코딩과 안전한 DOM API 사용이 중요합니다.
SQL 바인딩만으로 브라우저 XSS가 방어되지는 않습니다.
XSS=출력 문맥에 맞는 인코딩
정답 3번 · 예측할 수 없는 CSRF 토큰을 검증한다
서버는 요청이 사용자의 의도에 따라 제출되었는지 CSRF 토큰 등으로 검증할 수 있습니다.
SameSite 쿠키는 유용하지만 환경에 따라 추가 방어가 필요할 수 있습니다.
CSRF=요청 의도 검증
정답 2번 · 객체 ID를 바꾸었을 때 서버의 객체별 인가 검사가 빠진다
식별자가 노출되는 것 자체보다 현재 사용자가 해당 객체에 접근할 권한이 있는지 확인하지 않는 것이 문제입니다.
ID 값을 랜덤하게 만드는 것만으로 권한 검사를 대체하지 않습니다.
객체별 서버 인가 필수
정답 1번 · 서버가 공격자가 지정한 내부·외부 주소로 요청을 보내게 된다
서버의 네트워크 접근 권한을 악용해 내부 자원이나 메타데이터 등에 접근하려는 문제가 될 수 있습니다.
입력 URL 검증·DNS 재확인·출구 트래픽 정책을 함께 고려해야 합니다.
SSRF=서버가 대신 요청하게 만듦
정답 4번 · 허용된 기본 경로 아래의 정규화된 대상만 접근하게 제한한다
경로 정규화와 기준 디렉터리 검증, 권한 제한을 결합해 허용하지 않은 파일 접근을 막습니다.
단순 문자열 치환만으로 모든 우회 형태를 막을 수는 없습니다.
경로 검증=정규화+허용 범위
정답 3번 · 자바스크립트에서 해당 쿠키를 읽는 접근을 제한한다
HttpOnly는 브라우저의 문서 스크립트가 쿠키에 접근하는 것을 제한하여 일부 공격 피해를 줄입니다.
HttpOnly만으로 XSS 실행 자체나 CSRF를 모두 막지는 못합니다.
HttpOnly=스크립트의 쿠키 접근 제한
정답 2번 · HTTPS 등 보안 연결을 통해서만 전송되도록 제한한다
Secure 속성은 보안 연결이 아닌 요청에서 쿠키를 전송하지 않도록 하는 데 사용됩니다.
Secure와 HttpOnly의 보호 목적을 구분해야 합니다.
Secure=보안 연결에서만 전송
정답 1번 · 필요하면 셸을 거치지 않는 안전한 API와 인자 분리를 사용한다
외부 명령 호출 자체를 줄이고 필요한 경우 입력값을 데이터 인자로 전달하며 권한을 제한합니다.
일반적인 HTML 이스케이프가 셸 명령 인자를 안전하게 만드는 것은 아닙니다.
명령=셸 문자열 조합 피하기
정답 4번 · 파일 유형·크기·저장 위치·실행 권한을 서버에서 통제한다
서버 측 검증과 격리된 저장, 실행 금지 및 최소 권한이 업로드를 통한 침해 위험을 줄입니다.
파일 확장자 검사 하나만으로 실제 파일 콘텐츠와 위험을 판단하지 않습니다.
업로드=검증·격리·비실행