- 웹 해킹 공격 방법 중 하나
- 게시판이나 웹 메일 등에 자바스크립트와 같은 악성 스크립트 코드를 삽입 해 개발자가 고려하지 않은 기능이 작동하게 하는 공격
- 클라이언트, 사용자를 대상으로 한 공격
- 이 취약점은 웹 어플리케이션이 사용자로부터 입력 받은 값을 제대로 검사하지 않고 사용할 경우 나타남
- 이 취약점으로 해커가 사용자의 정보(쿠키, 세션 등)를 탈취하거나, 자동으로 비정상적인 기능을 수행하게 할 수 있다. 주로 다른 웹사이트와 정보를 교환하는 식으로 작동하므로 사이트 간 스크립팅
- Reflected XSS , Stored XSS , DOM based XSS 3가지 종류
Reflected XSS(반사형 XSS)
- 악의적인 사용자가 악성 스크립트가 담긴 URL을 만들어 일반 사용자에게 전달하는 경우
- 악의적인 사용자가 보안이 취약한 사이트를 발견
- 보안이 취약한 사이트에서 사용자 정보를 빼돌릴 수 있는 스크립트가 담긴 URL을 만들어 일반 사용자에게 스팸 메일로 전달
- 일반 사용자는 메일을 통해 전달받은 URL 링크를 클릭. 일반 사용자 브라우저에서 보안이 취약한 사이트로 요청을 전달.
- 일반 사용자의 브라우저에서 응답 메시지를 실행하면서 악성 스크립트가 실행.
- 악성 스크립트를 통해 사용자 정보가 악의적인 사용자에게 전달.

- 방어 방법
- 입력 값 제한 (클라이언트 입력 제한 정규식 사용)
- 입력 값 치환 (악성 스크립트를 만들 수 있는 특수 문자들을 치환)
- 직접 출력 금지
Stored XSS(저장형 XSS)
- 보안이 취약한 서버에 악의적인 사용자가 악성 스크립트를 저장함으로써 발생. 비정상적인 방법이 아니라 서버에서 제공하는 게시판, 사용자 프로필에 악의적으로 동작하는 스크립트가 그대로 저장된 후 클라이언트의 브라우저로 전달되어 문제가 발생하는 경우
- 악의적인 사용자가 보안이 취약한 사이트를 발견.
- 보안이 취약한 사이트에서 제공하는 게시판에 사용자 정보를 빼돌릴 수 있는 스크립트를 작성.
- 일반 사용자는 악의적인 사용자가 작성한 게시글을 읽으면, 서버로부터 악성 스크립트가 담긴 게시글 응답을 전달받음.
- 일반 사용자의 브라우저에서 응답 메시지를 실행하면서 악성 스크립트가 실행.
- 악성 스크립트를 통해 사용자 정보가 악의적인 사용자에게 전달.

https://junhyunny.github.io/images/stored-cross-site-scripting-1.JPG
- 방어 방법
- 사용자 입력 검증 및 변경 (사용자가 입력한 값을 그대로 저장X, 태그를 만들 때 사용하는 <>을 html에서 사용하는 특수 문자로 변경)
- 직접 출력 금
DOM based XSS(DOM 기반 XSS)
- 보안에 취약한 JavaScript 코드로 DOM 객체를 제어하는 과정에서 발생하는 경우
- 악의적인 사용자가 보안이 취약한 웹 페이지를 발견.
- 보안이 취약한 웹 페이지에서 악성 스크립트가 실행되도록 URL 주소를 만들어 일반 사용자에게 전달.
- 일반 사용자는 메일 등을 통해 전달 받은 URL 링크를 클릭. 서버로부터 HTML 문서를 전달 받음.
- 사용자의 브라우저가 응답 받은 HTML 문서를 읽으면서 필요한 스크립트를 실행하는 중에 악성 스크립트가 동작.
- 악성 스크립트를 통해 사용자 정보가 악의적으로 전달.

얼핏 보면 반사형 XSS 공격과 DOM 기반 공격이 유사하게 보임 두 공격 사이의 차이점은
악성 스크립트가 심어지는 시점
참고
https://junhyunny.github.io/information/security/dom-based-cross-site-scripting/
DOM 기반 XSS(DOM based Cross Site Scripting) 공격과 방어
<br /><br />
junhyunny.github.io
'CS' 카테고리의 다른 글
| JWT(JSON Web Token)란? (0) | 2024.06.12 |
|---|---|
| [용어정리] 소프트웨어 아키텍처 / 디자인 패턴 (7) | 2024.04.08 |