DOM innerHTML sink
Check whether location, hash, postMessage, or other untrusted values reach unsafe sinks such as innerHTML.
DOM sink テスト
このシナリオは iframe sandbox ではなく、ユーザー入力が HTML/DOM にどう描画されるかを検証します。
- 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 필터를 통과시키세요.