웹 애플리케이션 보안 취약점 중 XSS(Cross-Site Scripting) 는 OWASP Top 10에도 꾸준히 등장하는 대표적인 공격이다.
XSS는 공격자가 웹 페이지에 악성 스크립트를 삽입하여, 다른 사용자의 브라우저에서 실행되도록 유도하는 공격 기법이다.
이번 글에서는 XSS의 개념, 공격 방식, 예시, 그리고 방어 방법을 살펴보겠다.
1. XSS란 무엇인가?
- 정의: 공격자가 웹 애플리케이션에 악성 자바스크립트를 삽입해, 사용자의 브라우저에서 실행되게 만드는 공격.
- 위험성:
- 쿠키/세션 탈취
- 피싱(가짜 입력창)
- 악성 행위 자동 수행(예: 게시글 자동 등록, 계정 변경)
2. XSS 공격 방식
XSS는 크게 세 가지 유형으로 구분된다.
- 저장형(Persistent XSS)
- 악성 스크립트가 서버 DB에 저장 → 이후 페이지를 보는 모든 사용자의 브라우저에서 실행.
- 예: 게시판 댓글에 "<script>alert("Hacked")</script>" 저장 → 해당 게시글을 보는 사람마다 스크립트 실행.
- 반사형(Reflected XSS)
- 공격자가 조작한 URL을 통해 악성 스크립트가 바로 응답에 반영.
- 예: 검색 페이지에 입력한 값을 그대로 출력할 때 발생.
- DOM 기반(DOM-based XSS)
- 서버 응답이 아니라 브라우저에서 실행되는 JS 코드(DOM 조작)가 직접 취약
- 예: 클라이언트 스크립트가 location.hash 같은 값 그대로 innerHTML에 삽입.
3. XSS 방어 방법
- 출력 인코딩(Escaping)
- HTML, JavaScript, URL, CSS 등 맥락에 맞게 인코딩.
- 예: < → <, > → >.
- 입력 검증(Input Validation)
- 허용된 값(화이트리스트)만 통과.
- 예: 숫자만 입력 가능한 필드는 숫자만 허용.
- HttpOnly 쿠키
- 자바스크립트에서 쿠키 접근 차단 → 세션 탈취 방어.
- Set-Cookie: sessionid=abc123; HttpOnly; Secure.
- Content Security Policy (CSP)
- 브라우저가 허용된 리소스만 실행하도록 제한.
- 예: 외부 스크립트 차단, 인라인 스크립트 금지.
- 보안 프레임워크 사용
- React, Angular 같은 프레임워크는 기본적으로 HTML 이스케이프 처리.
'보안' 카테고리의 다른 글
| SQL Injection(SQLi) (0) | 2025.10.28 |
|---|---|
| JWT(Json Web Token) (0) | 2025.10.28 |
| HTTPS와 SSL인증서의 역할 (0) | 2025.10.28 |
| CSRF(Cross-Site Request Forgery) (0) | 2025.10.28 |
| 쿠키와 세션 (0) | 2025.10.28 |