postMessage 스푸핑
parent.postMessage 로 부모 페이지에 위조 메시지를 보내고 origin 검증 누락을 확인한다.
sandbox 정책별 동작
| 정책 | 예상 결과 |
|---|---|
| sandbox 미부착 | 동작함 |
sandbox="allow-scripts" | 동작함 |
sandbox="" (가장 엄격) | 차단됨 |
임베드 스니펫
이 코드는 임베드 전용 페이지를 사용합니다. 본인 서비스에 그대로 붙여 넣고 렌더링/차단 여부를 확인하세요.
<iframe src="https://xss-playground.com/embed/post-message?lang=ko" title="XSS Playground - postMessage 스푸핑" width="600" height="420" loading="lazy" referrerpolicy="strict-origin-when-cross-origin"></iframe>
실행
target origin
// 로그 없음
해설
- postMessage 는 cross-origin 통신용으로 의도된 API 입니다. SOP 가 막아 주지 않으므로 부모 쪽에서 event.origin 검증을 해야 합니다.
- 부모 페이지가 결제 위젯, iframe-resizer, 유튜브 IFrame API 같은 message 리스너를 두고 있다면, 그 포맷을 흉내낸 메시지가 공격 표면이 됩니다.
- 대응은
event.origin검증과 메시지 type/schema 검증입니다. sandbox 에서는sandbox=""이라야 postMessage 까지 막힙니다.