DOM innerHTML sink
Check whether location, hash, postMessage, or other untrusted values reach unsafe sinks such as innerHTML.
DOM sink check
This scenario tests how user input is rendered into HTML / DOM, not iframe sandbox behavior.
- untrusted source 가 innerHTML, outerHTML, insertAdjacentHTML 로 들어가는지 확인
- textContent / DOM API 기반 렌더링으로 대체 가능한지 확인
- 클라이언트 라우터, hash, postMessage payload 를 sink 에 넣기 전 검증하는지 확인
페이로드
복사할 payload
innerHTML 에 들어갔을 때 이벤트 핸들러가 실행되는지 확인.
미리보기
미리보기는 학습용으로 의도적으로 unsafe 렌더링을 수행합니다. 실제 서비스에서는 이 payload 가 텍스트로 이스케이프되거나 제거되어야 합니다.
로그
// 로그 없음
해설
- DOM 기반 XSS 는 서버 응답이 안전해도 클라이언트 코드가 untrusted source 를 unsafe sink 에 넣으면서 발생합니다.
- 대표 source 는
location.search,location.hash,postMessage, storage 값이고, 대표 sink 는innerHTML,outerHTML,insertAdjacentHTML입니다. - 가능한 경우
textContent나 DOM API 로 렌더링하고, HTML 이 필요할 때만 HTML 필터를 통과시키세요.