Markdown 링크 XSS
Markdown/MDX/에디터 렌더러가 링크 URL, raw HTML, 이미지 URL 을 안전하게 정규화하고 sanitize 하는지 확인한다.
HTML payload 테스트
이 시나리오는 iframe sandbox 가 아니라 사용자 입력이 HTML/DOM 으로 렌더링되는 지점을 검증합니다.
- Markdown 렌더링 후 최종 HTML 을 다시 sanitize 하는지 확인
- 링크 URL 은 프로토콜 allowlist 로 검증하는지 확인
- raw HTML 허용 옵션이 켜져 있는지 확인
페이로드
복사할 payload
Markdown 소스를 저장하는 에디터에 붙여 넣고 렌더러 결과의 href 를 확인한다.
미리보기
미리보기는 학습용으로 의도적으로 unsafe 렌더링을 수행합니다. 실제 서비스에서는 이 payload 가 텍스트로 이스케이프되거나 제거되어야 합니다.
로그
// 로그 없음
해설
- Markdown은 안전한 텍스트 포맷처럼 보이지만, 렌더링 결과는 결국 HTML 입니다. 링크와 이미지 URL 정책이 약하면
javascript:같은 스킴이 살아남을 수 있습니다. - ProseMirror, Markdown, MDX, rich text renderer 는 저장 형식과 출력 형식이 다를 수 있습니다. 저장 전 sanitize 만 믿지 말고 최종 출력 HTML 기준으로도 검증하세요.
- raw HTML 허용, custom node renderer, embed 확장 기능은 별도 공격면입니다. 플러그인별로 허용 태그와 URL 정책을 문서화하는 편이 좋습니다.