웹 보안 심화 개요
웹 애플리케이션 보안은 정보보안기사 시험에서 매회 출제되는 핵심 영역입니다. XSS, CSRF, SSRF는 OWASP Top 10에 포함된 주요 취약점으로, 각 공격의 원리와 방어 방법을 명확히 구분해야 합니다.
XSS (Cross-Site Scripting)
공격자가 악성 스크립트를 웹 페이지에 삽입하여 피해자 브라우저에서 실행되게 하는 공격입니다.
XSS 유형
- 반사형(Reflected) XSS: 악성 스크립트가 URL 파라미터에 포함되어 즉시 반사. 피싱 링크로 전달
- 저장형(Stored/Persistent) XSS: 악성 스크립트가 DB에 저장되어 다수 사용자에게 실행. 더 위험
- DOM 기반(DOM-based) XSS: 서버 응답 없이 클라이언트 측 스크립트가 DOM을 조작
XSS 방어
- 출력 인코딩: HTML 특수문자를 엔티티로 변환 (< > & ")
- CSP(Content Security Policy) 헤더로 스크립트 실행 출처 제한
- HttpOnly 쿠키 플래그로 JavaScript 쿠키 접근 차단
CSRF (Cross-Site Request Forgery)
인증된 사용자의 세션을 악용하여 의도하지 않은 요청을 서버에 보내는 공격입니다.
공격 원리
피해자가 A 사이트에 로그인 → 공격자가 만든 B 사이트 방문 → B 사이트에서 A 사이트로 자동 요청 전송 → 피해자 세션으로 악의적 행동 실행
CSRF 방어
- CSRF 토큰: 폼에 무작위 토큰 포함, 서버에서 검증
- SameSite 쿠키: Strict/Lax 설정으로 크로스 사이트 쿠키 전송 차단
- Referer/Origin 헤더 검증
- 중요 작업에 재인증 요구
SSRF (Server-Side Request Forgery)
서버가 공격자가 지정한 내부 주소로 요청을 보내도록 유도하는 공격입니다. 클라우드 환경에서 메타데이터 서버(169.254.169.254) 접근에 자주 악용됩니다.
SSRF 방어
- URL 입력 시 허용된 도메인 목록(Allowlist) 검증
- 내부 IP 범위(10.x, 172.16.x, 192.168.x, 169.254.x) 차단
- DNS Rebinding 방지를 위해 IP 재검증
HTTP 보안 헤더
- Content-Security-Policy (CSP): 허용된 스크립트·스타일·이미지 출처 정의
- Strict-Transport-Security (HSTS): HTTPS만 허용, max-age 지정
- X-Content-Type-Options: nosniff: MIME 타입 스니핑 방지
- X-Frame-Options: DENY/SAMEORIGIN: 클릭재킹 방지
- X-XSS-Protection: 구형 브라우저 XSS 필터 활성화
- Referrer-Policy: 리퍼러 헤더 전송 범위 제어
시험 핵심 비교
- XSS: 피해자 브라우저에서 스크립트 실행 (클라이언트 공격)
- CSRF: 피해자 세션으로 서버에 요청 전송 (서버 공격)
- SSRF: 서버가 내부 리소스에 요청 전송 (서버 내부 공격)
- XSS 방어 핵심: 출력 인코딩 + CSP
- CSRF 방어 핵심: CSRF 토큰 + SameSite 쿠키
마무리
XSS, CSRF, SSRF는 웹 보안의 대표 취약점 삼총사입니다. 공격 흐름과 방어 기법을 공격자 입장에서 이해하면 시험 문제 풀이가 훨씬 쉬워집니다.