본문 바로가기
정보보호/기술

XSS (cross-site-Scripting)

by Salgoo26 2026. 6. 3.

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 변환): (★핵심) 화면 출력 시 브라우저가 스크립트로 인식하지 못하도록 특수문자를 치환함. (예: < ➔ &lt;, > ➔ &gt;)
  • 보안 헤더(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

댓글