script 태그 삽입
사용자 입력이 HTML 문서로 그대로 파싱될 때 <script> 태그가 실행 가능한지 확인한다.
HTML payload 테스트
이 시나리오는 iframe sandbox 가 아니라 사용자 입력이 HTML/DOM 으로 렌더링되는 지점을 검증합니다.
- 입력값이 텍스트로 이스케이프되는지, 실제 script 태그로 파싱되는지 확인
- HTML 필터가 script 태그와 위험 속성을 제거하는지 확인
- CSP script-src 가 inline script 실행을 막는지 확인
페이로드
복사할 payload
서버가 입력을 그대로 HTML 문서에 반영하는지 확인하는 가장 기본적인 payload.
붙여넣을 곳
본인이 권한을 가진 dev/staging의 에디터, 댓글, 프로필 또는 HTML 렌더링 입력란
판정 기준
실행되면 위험 신호입니다. 코드가 텍스트로 표시되거나 위험 요소가 제거되어야 기대한 방어 결과입니다.
미리보기
미리보기는 학습용으로 의도적으로 unsafe 렌더링을 수행합니다. 실제 서비스에서는 이 payload 가 텍스트로 이스케이프되거나 제거되어야 합니다.
로그
// 로그 없음
해설
- 서버가 사용자 입력을 HTML 문서에 그대로 반영하면
<script>태그가 파서에 의해 실행될 수 있습니다. - 반대로
innerHTML로 나중에 삽입한 script 태그는 최신 브라우저에서 보통 실행되지 않습니다. 그래서 이 페이지의 미리보기는 전체 HTML 문서 파싱 상황을 재현하기 위해 격리된 미리보기를 사용합니다. - 대응은 출력 컨텍스트별 인코딩, 신뢰 가능한 HTML 필터, CSP
script-src조합으로 확인하세요.