XSS란 웹 페이지에 악성 스크립트(JavaScript)를 삽입하여, 페이지에 접속한 사용자의 브라우저에서 해당 스크립트가 실행되게 만드는 취약점으로 세션 쿠키(Cookie) 탈취, 피싱 사이트 유도, 악성코드 다운로드 등이 그 목적이다.
1. XSS 유형
① Stored XSS (저장형 XSS)
- 원리: 악성 스크립트가 서버의 데이터베이스(DB)에 영구적으로 '저장'됨. (예: 게시판, 댓글)
- 공격 흐름: 해커가 악성 글 작성 ➔ DB 저장 ➔ 일반 사용자가 게시글 열람 ➔ 브라우저에서 스크립트 실행.
- 특징: URL을 직접 클릭하게 유도할 필요가 없음. 해당 게시물을 읽는 모든 사용자가 피해자가 되므로 파급력이 가장 큼.
② Reflected XSS (반사형 XSS)
- 원리: 조작된 URL에 포함된 스크립트가 서버를 거쳐 브라우저로 '반사(Reflect)'되어 실행됨.
- 공격 흐름: 해커가 악성 URL 생성 ➔ 피해자에게 클릭 유도(피싱) ➔ 피해자 클릭 ➔ 서버가 입력값을 포함한 응답 페이지 반환 ➔ 브라우저에서 스크립트 실행.
- 특징: 스크립트가 서버에 저장되지 않음. 반드시 피해자가 악성 링크를 클릭해야만 공격이 성립함.
③ DOM 기반 XSS (DOM Based XSS)
- 원리: 클라이언트 측 자바스크립트가 브라우저의 DOM(Document Object Model) 환경을 동적으로 조작할 때 발생함.
- 공격 흐름: 해커가 악성 URL(주로 # 프래그먼트 포함) 전달 ➔ 피해자 클릭 ➔ 서버는 정상 페이지 반환 ➔ 브라우저 렌더링 시 클라이언트 JS가 URL의 페이로드를 화면에 출력 ➔ 스크립트 실행.
- 특징: 악성 스크립트가 서버로 전송되지 않고 브라우저 단에서만 처리되므로 서버 측 보안 필터(WAF/IPS)를 우회하기 쉬움.
2. 비교
| 유형 | 페이로드(스크립트) 위치 | 서버 저장 여부 | 타겟 유도 방법 | 방어 및 탐지 |
| Stored XSS | 서버 DB (게시글, 댓글) | 저장됨 (O) | 게시판 방문 (유도 불필요) | 파급력 매우 큼 |
| Reflected XSS | 조작된 HTTP 요청 (URL 파라미터) | 저장 안 됨 (X) | 악성 링크 클릭 유도 | 서버 로그로 탐지 가능 |
| DOM XSS | 브라우저 DOM (클라이언트 JS) | 저장 안 됨 (X) | 악성 링크 클릭 유도 | 서버에 로그가 남지 않음 |
3.방어 대책
- 입력값 검증: 사용자가 입력한 데이터에 스크립트 태그(<script>) 등 위험 문자가 있는지 서버 단에서 필터링.
- 출력값 인코딩 (HTML Entity 변환): (★핵심) 화면 출력 시 브라우저가 스크립트로 인식하지 못하도록 특수문자를 치환함. (예: < ➔ <, > ➔ >)
- 보안 헤더(CSP) 적용: Content-Security-Policy 헤더를 적용해 허용된 출처의 스크립트만 실행되도록 통제.
- HttpOnly 속성 적용: 자바스크립트(document.cookie)를 통한 세션 쿠키 접근을 원천 차단.
'정보보호 > 기술' 카테고리의 다른 글
| 스푸핑(Spoofing) (0) | 2026.06.03 |
|---|---|
| 포트 스캐닝 (0) | 2026.06.03 |
| IPSec 모드와 프로토콜 (0) | 2026.06.03 |
| 네트워크 방화벽 아키텍처 (0) | 2026.06.02 |
| BitLocker vs EFS (1) | 2026.06.02 |
댓글