웹 보안 한눈에 정리: SSL/TLS vs 웹 공격
1) SSL/TLS (HTTPS) — 핵심 특징 & 실무 팁
| 항목 | 특징(핵심) | 실무 팁/주의 |
|---|---|---|
| 목적/효과 | 기밀성(암호화), 무결성(MAC/AEAD), 서버 인증서 기반 신뢰 | HTTPS 전면 적용, 평문 HTTP 301/308 리다이렉트 금지 → HSTS 권장 |
| 버전 | TLS 1.3 권장(핸드셰이크 단순화·보안강화), 1.2은 현대 스위트만 | SSLv2/3, TLS 1.0/1.1 폐기 |
| 핸드셰이크 | ClientHello ↔ ServerHello, 키 합의(EC/DH), 인증서 검증, 키 확립 | ALPN(HTTP/2,3) 협상, OCSP Stapling |
| 인증서 | X.509, CA 체인, 유효기간/도메인 일치 검증 | 자동갱신(ACME), 핀닝은 신중(운영 난이도↑) |
| 암호 스위트 | AEAD(AES-GCM/CHACHA20-POLY1305), ECDHE 키교환 | CBC/RC4/3DES 금지, 취약 스위트 제거 |
| 세션 재개 | 세션 티켓/레쥬메(0-RTT는 재전송 위험 고려) | 고성능 환경에서 재개 활용, 0-RTT 재실행 주의 |
| HSTS | 브라우저가 HTTPS만 사용하도록 강제 | Strict-Transport-Security: max-age=...; includeSubDomains; preload |
| 혼합 콘텐츠 | HTTPS 페이지 내 HTTP 리소스 포함 시 위험 | 모든 리소스 HTTPS로 통일, CSP로 차단 |
| 쿠키 보안 | Secure/HttpOnly/SameSite | Set-Cookie: ...; Secure; HttpOnly; SameSite=Lax(또는 Strict) |
| 로깅/가시성 | 암호화로 패킷 내용 비가시 | WAF/리버스프록시에서 TLS 종료 후 보안 분석(프라이버시 고려) |
2) 웹 공격 — 유형별 특징 & 핵심 방어
| 공격 | 특징(무엇/어떻게) | 핵심 방어(짧게) |
|---|---|---|
| XSS | 사용자 입력이 스크립트로 반사/저장/DOM 실행 | 출력 인코딩, CSP, 템플릿 자동 이스케이프, 신뢰되지 않은 HTML 금지 |
| SQL Injection | 입력이 쿼리 구조를 변조 | Prepared Statement(매개변수화), ORM 바인딩, 최소 권한 계정 |
| CSRF | 사용자의 의도치 않은 요청 유도 | CSRF 토큰, SameSite 쿠키, Referer/Origin 검증 |
| 파일 업로드 악용 | 웹셸/실행파일 업로드·경로 조작 | 확장자·MIME·매직넘버 검증, 서버 외부 저장, 실행권한 제거 |
| 디렉터리 트래버설 | ../ 등으로 상위 경로 접근 |
경로 정규화, 고정 루트(Chroot/BASE), 블랙리스트 대신 화이트리스트 |
| SSRF | 서버가 내부망/메타데이터에 요청 | 내부 주소 차단(169.254.169.254 등), URL 스킴/리디렉트 검증, 아웃바운드 ACL |
| Command Injection | 쉘 명령에 입력 삽입 | OS 명령 미사용/라이브러리 사용, 인자 화이트리스트, 쉘 이스케이프 |
| XXE | XML 외부 엔티티로 파일/요청 유출 | XML 파서에서 외부 엔티티 비활성화, 최신 라이브러리 |
| Clickjacking | 투명 프레임으로 오동작 유도 | X-Frame-Options: DENY/SAMEORIGIN, CSP frame-ancestors |
| 세션 하이재킹/고정 | 세션ID 탈취·고정 | TLS 필수, Secure/HttpOnly/SameSite, 세션 재발급/만료 |
| HTTP Request Smuggling | 프록시간 요청 경계 불일치 악용 | 일관된 파서, CL/TE 혼용 금지, 최신 프록시/서버 설정 |
빠른 암기 포인트
-
통신 보안은 TLS 1.3 + HSTS + 안전 스위트 + 쿠키 보안
-
입력은 바인딩·출력은 인코딩·정책은 CSP
-
업로드/경로/리디렉트/내부요청(SSRF)은 화이트리스트·격리가 핵심