피드로 돌아가기
--- title: I built a static XSS playground that runs payloads safely in the browser ---
Dev.toDev.to
Security

Opaque Origin 기반의 Sandboxed iframe을 활용한 정적 XSS 실습 환경 구축

--- title: I built a static XSS playground that runs payloads safely in the browser ---

GUERFI AHMED YACINE2026년 5월 9일1intermediate

Context

이론 중심의 학습 자료와 취약한 Backend가 필요한 기존 XSS 실습 환경의 한계 존재. 안전한 실행 환경과 실습 편의성을 동시에 충족하는 Static Frontend 기반의 격리 구조 필요.

Technical Solution

  • sandbox="allow-scripts" 속성을 적용한 iframe 도입으로 Payload 실행 권한 부여
  • allow-same-origin 속성을 의도적으로 제외하여 Unique Opaque Origin을 생성함으로써 Parent Page의 Storage 및 DOM 접근 차단
  • window.alert를 parent.postMessage로 오버라이딩하여 샌드박스 내부 이벤트를 안전하게 외부로 전달하는 구조 설계
  • window.open 및 window.fetch API를 무효화하여 외부 네트워크 통신 및 팝업을 통한 공격 벡터 원천 차단
  • Inline Script 허용 지양 및 올바른 Output Encoding 적용을 통한 CSP(Content Security Policy) 강화 전략 채택

- 외부 콘텐츠 실행 시 sandbox 속성에서 allow-same-origin 제거 여부 검토 - 위험 API(fetch, open 등)의 Mocking을 통한 런타임 제어 가능성 확인 - CSP 설정 시 Inline Script 허용이 정책의 실효성을 저해하는지 점검 - Output Encoding과 Safe DOM API 사용을 최우선 방어 전략으로 설정

원문 읽기