Stored XSS 대응 방안
- 해당 문서에서는 Stored XSS 대응 방안에 대해 기술합니다.
- 대부분 서버에서 제공하는 게시판, 사용자 프로필 등에 악의적으로 동작하는 스크립트가 그대로 저장된 후 클라이언트의 브라우저로 전달되어 문제가 발생합니다.
특이 사항
- 해당 문서에서는 Naver에서 제공하는
Smart Editor 2
를 활용하여 Stored XSS 공격에 대한 대응 방안을 설명합니다.
- XSS 대응으로
Lucy XSS Filter
(lucy-xss-servlet-filter)를 활용할 수 있지만 Lucy XSS Filter로도 모든 XSS 공격에 대해 방어하지는 못하는 것으로 보입니다.
공격 방법
- Naver 스마트 에디터 HTML 편집 기능을 통한 공격 방법입니다.
- 아래와 같이 HTML 탭을 선택합니다.
# 스크립트 예시
<img src="#" onerror="alert('hi')">
-> 유효하지 않은 이미지 경로를 지정하고, 이에 대한 에러 발생 시 alert 창을 띄우는 스크립트
- 게시글로 이동하면 (위 사진에서는 뒤로가기) 아래와 같이 스크립트가 실행되며 alert 창이 발생합니다.
방어 방법
- Stored XSS의 방어 방법에 대한 내용입니다.
1) 꼭 사용할 태그만 WhiteList로 등록
- 모든 스크립트 사용을 제한하고 XSS 공격과 무관한 스크립트만 WhiteList에 등록하여 사용할 수 있도록 합니다.
- XSS 공격 의도가 아니었음에도 스크립트를 사용하지 못할 수 있다는 단점이 있습니다.
2) 태그 중 이벤트가 포함될 경우 치환
onclick
, ontoggle
등 이벤트를 발생시키는 태그가 존재할 경우 이벤트를 발생시킬 수 없도록 해당 태그를 치환합니다.
Reference
https://junhyunny.github.io/information/security/spring-mvc/stored-cross-site-scripting/