- 웹 애플리케이션의 보안 취약점을 이용하여 악성 스크립트를 삽입하는 공격이다.
- 공격자는 사용자의 웹 브라우저에서 악성 코드를 실행할 수 있다.
- X는 Cross를 의미한다. CSS는 이미 있기 때문에 XSS라고 부름
공격 유형
- Stored XSS (저장형 XSS)
- 공격자가 웹 서버에 악성 스크립트를 저장하고, 다른 사용자가 이를 볼 때 실행되는 방식이다.
- 게시판이나 댓글 시스템에 악성 스크립트를 작성하여 저장해 두면, 다른 사용자가 해당 페이지를 열람할 때 스크립트가 실행된다.
- Reflected XSS (반사형 XSS)
- 공격자가 URL에 악성 스크립트를 삽입하고, 피해자가 해당 URL을 클릭하거나 직접 접근할 때 스크립트가 실행되는 방식이다.
- 보통 피싱 이메일이나 메시지를 통해 URL을 유도한다.
- DOM-based XSS
- 웹 페이지의 클라이언트 사이드 코드가 악성 스크립트를 직접 실행하는 방식이다.
- 서버와 상호작용 없이 웹 브라우저 내의 문서 객체 모델(DOM) 환경에서 발생한다.
XSS 공격 방어 방법
- 입력 검증 및 인코딩
- 사용자로부터 입력받은 모든 데이터를 철저히 검증한다. (정규 표현식)
- HTML, JavaScript, URL, CSS 등 특정 콘텍스트에서 데이터를 출력할 때 적절하게 인코딩해야 한다.
- Content Security Policy (CSP) 설정
- 브라우저가 실행할 수 있는 콘텐츠의 출처를 제한하는 보안 정책이다.
- HTTPOnly 및 Secure 쿠키 사용
- X-XSS-Protection 헤더 사용
- 일부 브라우저는 XSS 공격을 탐지하고 차단하는 기능을 제공한다.
- 웹 애플리케이션 방화벽 (WAF) 사용
- WAF는 악성 요청을 실시간으로 감지하고 차단할 수 있는 방어 도구이다.