인코딩된 javascript: 프로토콜 우회
HTML entity, 제어문자, 대소문자 변형으로 javascript: URL 검증을 우회할 수 있는지 확인한다.
HTML payload 테스트
이 시나리오는 iframe sandbox 가 아니라 사용자 입력이 HTML/DOM 으로 렌더링되는 지점을 검증합니다.
- URL 속성 검증 전에 entity decoding 과 제어문자 제거가 수행되는지 확인
- 프로토콜 allowlist(http, https, mailto 등) 기반으로 검증하는지 확인
- 렌더러와 sanitizer 가 서로 다른 정규화 규칙을 쓰지 않는지 확인
페이로드
복사할 payload
속성값을 디코딩한 뒤 프로토콜을 검증하는지 확인한다.
미리보기
미리보기는 학습용으로 의도적으로 unsafe 렌더링을 수행합니다. 실제 서비스에서는 이 payload 가 텍스트로 이스케이프되거나 제거되어야 합니다.
로그
// 로그 없음
해설
- URL 필터가
href.startsWith("javascript:")같은 문자열 검사만 하면 HTML entity 나 제어문자 변형을 놓칠 수 있습니다. - 검증 순서는 정규화가 먼저입니다. 브라우저가 해석하는 형태와 같은 기준으로 디코딩하고, 허용할 프로토콜만 통과시켜야 합니다.
- Markdown, link preview, embed 카드처럼 링크를 만드는 모든 렌더러에서 같은 URL 정책을 공유하는지 확인하세요.