Resurssit · 116

postMessage: tarkista alkuperä, ikkuna ja komento

Määritä iframe- tai ponnahdusikkunan viestisopimus, joka hylkää odottamattomat lähettäjät ja tiedot.

Päivitetty · 2 min

Mitä tämä opas auttaa saavuttamaan

  • Määritä osapuolet ja viestityypit
  • Validoi ennen vaikutusta
  • Testaa navigointi ja odottamattomat viestit

Pikatarkistus

  • Alkuperän, ikkunan, tyypin ja vähimmäistietojen sopimus.
  • Tarkistusketju ja hylkäys ilman liiketoimintavaikutusta.
  • Hylkäysmatriisi ja kuuntelijoiden siivous.

Vaiheittainen menetelmä

  1. 1

    Määritä osapuolet ja viestityypit

    Luettele tarkat alkuperät, odotettu ikkunaviite ja hyödylliset tyypit. Käytä täsmällistä targetOrigin-arvoa arkaluonteisille tiedoille. Alkuperään kuuluvat protokolla, isäntä ja portti; verkkotunnuksen osamerkkijonohaku ei varmista lähettäjää.

    Alkuperän, ikkunan, tyypin ja vähimmäistietojen sopimus.

  2. 2

    Validoi ennen vaikutusta

    Vertaa event.origin ja tässä integraatiossa event.source odotettuun ikkunaan. Tarkista skeema, sallitut arvot ja toiminnon tila. Käsittele sisältö tietona ilman eval-kutsua tai HTML-lisäystä. Sallittu alkuperä ei korvaa palvelimen käyttöoikeustarkistusta.

    Tarkistusketju ja hylkäys ilman liiketoimintavaikutusta.

  3. 3

    Testaa navigointi ja odottamattomat viestit

    Testaa samankaltainen verkkotunnus, eri portti, toinen saman alkuperän ikkuna, virheelliset kentät ja sulkemisen jälkeiset viestit. Poista tarpeettomat kuuntelijat ja mitätöi päättyneet vaihdot. Vastaa vain ennalta hyväksyttyyn alkuperään myös navigoinnin jälkeen.

    Hylkäysmatriisi ja kuuntelijoiden siivous.

Toistettava hyväksyntätapaus

Kuvitteellinen esimerkki: tiedot eivät kuvaa asiakasta tai havaittua tulosta.

Näytä tapauksen tiedot
{
    "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"
}

Odotettu päätös

Kuvitteellinen esimerkki: https://widget.example on sallittu, mutta event.source on toinen ikkuna. Sopimus edellyttää aktiivista iframe-ikkunaa: hylkää viesti ilman komentoa.

MDN — Window.postMessage

Oma hyväksyntämuistio

Kirjaa havaintoja tämän ohjeen kriteereistä. Muistio ei ole sertifiointi.

Muistio ei tallennu automaattisesti. Vie ennen poistumista.

Johdon indikaattorit

IndikaattoriMitä se mittaaEnsimmäinen toimenpide
Hylätyt odottamattomat tapauksetIlman vaikutusta hylätyt negatiiviset / suoritetut negatiiviset tapauksetKirjaa alkuperä, ikkuna ja tila
Onnistuneet sallitut vaihdotValmistuneet odotetut / testatut odotetut tilanteetErota vastaanotto ja vahvistettu vaikutus

Yleisiä virheitä

    Usein kysytyt kysymykset

    Riittääkö event.origin-tarkistus?

    Ei. Tarkista myös ikkuna, rakenne ja tila. Palvelimen on tarkistettava toiminnon käyttöoikeudet.

    Viralliset viitteet

    Viitteet tukevat menetelmää. Sovita tarkastukset kontekstiisi; ne eivät ole sertifiointia. Alkuperäiset viitteiden otsikot ja lähdeasiakirjat voivat olla toisella kielellä.

    Lähteet tarkistettu .