웹 공격 판별 지도

SQL Injection, XSS, CSRF는 깨지는 신뢰 경계가 다르다

이름을 먼저 외우기보다 사용자 값이 어느 경계를 넘어 명령, 코드, 권한 있는 요청으로 해석되는지 추적하면 대응책도 같이 정리된다.

SQL Injection 서버가 입력값을 SQL 구조로 해석
검색어·로그인 값 파라미터, 쿠키, body 값에 조작 문자열이 들어온다.
쿼리 조립 경계 문자열 결합으로 값과 SQL 골격이 섞인다.
DB 레코드 인증 우회, 조회, 수정, 삭제, 오류 노출로 번진다.
구조와 값 분리 Prepared Statement, 허용목록 검증, DB 최소권한.
XSS 브라우저가 출력값을 스크립트로 실행
게시글·URL·DOM 저장형, 반사형, DOM 기반 입력이 응답에 섞인다.
출력 문맥 경계 HTML, 속성, URL, JS 문맥을 구분하지 못한다.
사용자 브라우저 세션 탈취, 피싱, 화면 변조, 악성 이동이 발생한다.
출력 실행 차단 문맥별 인코딩, CSP, HttpOnly·Secure 쿠키.
CSRF 브라우저가 쿠키를 붙여 위조 요청 전송
외부 링크·폼 공격 페이지가 로그인 사용자의 브라우저를 유도한다.
요청 의도 경계 쿠키 자동 전송만 믿고 사용자 의도를 확인하지 않는다.
상태 변경 기능 비밀번호 변경, 송금, 게시글 작성 같은 요청이 실행된다.
요청 정당성 증명 CSRF 토큰, SameSite, Origin·Referer, 재인증.

자산-공격면-통제 매핑

DB와 계정

동적 SQL, 오류 메시지, 과도한 DB 권한이 공격면이 된다.

쿼리 바인딩, 오류 제한, 계정별 최소권한을 같이 적는다.

브라우저와 세션

댓글, 템플릿, innerHTML, URL 조립이 실행 경로가 된다.

출력 위치별 인코딩과 CSP로 실행 가능성을 낮춘다.

상태 변경 권한

POST라고 안전한 것이 아니라 인증 쿠키 자동 첨부가 핵심이다.

토큰과 출처 검증으로 사용자의 실제 의도를 확인한다.

실기 답안 체크포인트

  1. 1

    조작 대상 먼저 쿼리 구조, 출력 문맥, 요청 의도 중 무엇이 깨졌는지 쓴다.

  2. 2

    피해 위치 연결 DB, 브라우저, 상태 변경 기능처럼 피해가 생기는 자산을 붙인다.

  3. 3

    주 통제와 보조 통제 Prepared Statement, 문맥별 인코딩, CSRF 토큰을 축으로 보조책을 더한다.

오답 경계: HTTPS는 전송 구간 보호이고, HttpOnly는 쿠키 탈취 완화이며, 입력 검증만으로 CSRF를 증명하지 못한다.