참고 자료 · 116

postMessage: 출처, 창과 요청 명령 검증

iframe 또는 팝업 메시지 계약으로 예상 밖의 발신자와 데이터를 거부합니다.

업데이트됨 · 2 min

이 가이드가 달성하는 목표

  • 상대와 메시지 유형 정의
  • 효과 발생 전 검증
  • 이동과 계약 밖 메시지 시험

빠른 확인

  • 출처, 창, 유형과 최소 데이터 계약.
  • 검증 순서와 업무 효과 없는 거부.
  • 거부 목록과 리스너 정리.

단계별 방법

  1. 1

    상대와 메시지 유형 정의

    정확한 허용 origin, 예상 창 참조와 필요한 유형을 기록합니다. 민감한 데이터는 명확한 targetOrigin을 씁니다. origin은 프로토콜, 호스트와 포트를 포함하며 도메인의 부분 문자열로 발신자를 검증할 수 없습니다.

    출처, 창, 유형과 최소 데이터 계약.

  2. 2

    효과 발생 전 검증

    event.origin과 이 통합의 event.source를 예상 창과 비교합니다. 구조, 허용 값과 작업 상태를 검증합니다. eval이나 HTML 삽입 없이 데이터로 처리합니다. 허용 출처도 서버 권한 검증을 대신하지 못합니다.

    검증 순서와 업무 효과 없는 거부.

  3. 3

    이동과 계약 밖 메시지 시험

    비슷한 도메인, 다른 포트, 같은 출처의 다른 창, 잘못된 필드와 종료 후 메시지를 시험합니다. 불필요한 리스너를 제거하고 끝난 교환을 무효화합니다. 창 이동 후에도 응답은 미리 승인한 origin으로만 보냅니다.

    거부 목록과 리스너 정리.

재현 가능한 수락 사례

가상 예시입니다. 고객이나 실제 관측 결과를 나타내지 않습니다.

사례 입력 보기
{
    "allowed_origin": "https://widget.example",
    "observed_origin": "https://widget.example",
    "expected_window": "active_iframe",
    "observed_window": "another_window",
    "payload_schema_valid": true,
    "expected": "reject_without_effect"
}

예상 판단

가상 예: https://widget.example은 허용되지만 event.source는 다른 창입니다. 계약은 활성 iframe 창을 요구하므로 명령 없이 거부합니다.

MDN — Window.postMessage

나의 수락 기록장

이 가이드의 기준에 따라 관측을 기록합니다. 기록은 인증이 아닙니다.

자동 저장되지 않습니다. 떠나기 전에 내보내세요.

관리 지표

지표측정 대상첫 번째 조치
거부한 예상 밖 사례효과 없이 거부한 부정 사례 / 실행한 부정 사례출처, 창과 상태 기록
완료한 허용 교환완료한 정상 시나리오 / 시험한 정상 시나리오수신과 확인된 효과 구분

일반적인 실수

    자주 묻는 질문

    event.origin만 확인하면 되나요?

    아닙니다. 창, 구조와 상태도 확인하세요. 서버는 요청 작업의 권한을 검증해야 합니다.

    공식 참조

    참조는 방법을 뒷받침합니다. 상황에 맞게 검사를 조정하십시오. 이는 인증이 아닙니다. 원본 참조 제목 및 소스 문서는 다른 언어로 작성되었을 수 있습니다.

    참고 자료 확인일 .