Risorse · 116

postMessage: verificare origine, finestra e comando

Definire un contratto per messaggi di iframe o popup che rifiuti mittenti e dati inattesi.

Aggiornato · 2 min

Obiettivi di questa guida

  • Definire interlocutori e tipi
  • Validare prima di agire
  • Provare navigazione e messaggi fuori contratto

Verifica rapida

  • Contratto di origine, finestra, tipo e dati minimi.
  • Sequenza di validazione e rifiuto senza effetti operativi.
  • Matrice dei rifiuti e pulizia dei listener.

Metodo passo passo

  1. 1

    Definire interlocutori e tipi

    Elenca origini esatte, riferimento della finestra e tipi utili. Usa targetOrigin preciso per dati sensibili. L’origine comprende protocollo, host e porta; una ricerca di sottostringa nel dominio non valida il mittente.

    Contratto di origine, finestra, tipo e dati minimi.

  2. 2

    Validare prima di agire

    Confronta event.origin e, per questa integrazione, event.source con la finestra attesa. Valida schema, valori e stato dell’operazione. Tratta il contenuto come dati, senza eval o inserimento HTML. Un’origine approvata non sostituisce l’autorizzazione lato server.

    Sequenza di validazione e rifiuto senza effetti operativi.

  3. 3

    Provare navigazione e messaggi fuori contratto

    Prova dominio simile, porta diversa, altra finestra della stessa origine, campi invalidi e messaggi dopo la chiusura. Rimuovi listener inutili e invalida scambi conclusi. Le risposte usano un’origine già approvata anche dopo la navigazione della finestra.

    Matrice dei rifiuti e pulizia dei listener.

Caso di accettazione riproducibile

Esempio fittizio: questi dati non descrivono clienti o risultati osservati.

Vedi dati del caso
{
    "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"
}

Decisione attesa

Esempio fittizio: https://widget.example è approvata, ma event.source è un’altra finestra. Il contratto richiede l’iframe attiva: rifiuta senza eseguire comandi.

MDN — Window.postMessage

Il tuo registro di accettazione

Registra osservazioni sui criteri della guida. Un registro non è una certificazione.

Il registro non salva automaticamente. Esporta prima di uscire.

Indicatori di gestione

IndicatoreCosa misuraPrima azione
Casi inattesi rifiutatiCasi negativi rifiutati senza effetti / casi negativi eseguitiRegistrare origine, finestra e stato
Scambi approvati completatiScenari previsti conclusi / scenari previsti testatiDistinguere ricezione ed effetto confermato

Errori comuni

    Domande frequenti

    Basta controllare event.origin?

    No. Verifica anche finestra, struttura e stato. Il server deve controllare i permessi per l’azione.

    Riferimenti ufficiali

    I riferimenti supportano il metodo. Adattare i controlli al proprio contesto; non costituiscono una certificazione. I titoli dei riferimenti originali e i documenti di origine potrebbero essere in un'altra lingua.

    Riferimenti consultati il .