Recursos · 116

postMessage: verificar origen, ventana y comando

Definir el contrato de mensajes de una iframe o ventana para rechazar remitentes y datos inesperados.

Actualizado · 2 min

Lo que esta guía ayuda a lograr

  • Definir interlocutores y tipos
  • Validar antes de actuar
  • Probar navegación y mensajes inesperados

Comprobación rápida

  • Contrato de origen, ventana, tipo y datos mínimos.
  • Validación y rechazo sin efectos de negocio.
  • Matriz de rechazo y limpieza de escuchas.

Método paso a paso

  1. 1

    Definir interlocutores y tipos

    Lista orígenes exactos, referencia de ventana y tipos útiles. Usa targetOrigin preciso para datos sensibles. El origen incluye protocolo, host y puerto; buscar una subcadena en un dominio no valida al interlocutor.

    Contrato de origen, ventana, tipo y datos mínimos.

  2. 2

    Validar antes de actuar

    Compara event.origin y, para esta integración, event.source con la ventana prevista. Valida esquema, valores permitidos y estado. Trata el contenido como datos, sin eval ni inserción HTML. Un origen aprobado no sustituye la autorización del servidor para acciones sensibles.

    Validación y rechazo sin efectos de negocio.

  3. 3

    Probar navegación y mensajes inesperados

    Prueba dominio parecido, otro puerto, otra ventana del mismo origen, campos inválidos y mensajes tras el cierre. Elimina escuchas innecesarias e invalida intercambios terminados. Las respuestas deben usar un origen previamente aprobado aunque la ventana navegue.

    Matriz de rechazo y limpieza de escuchas.

Caso de aceptación reproducible

Ejemplo ficticio: estos datos no describen clientes ni resultados observados.

Ver datos 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"
}

Decisión esperada

Ejemplo ficticio: el origen es https://widget.example, aprobado, pero event.source corresponde a otra ventana. El contrato exige la iframe activa: rechaza el mensaje sin emitir un comando.

MDN — Window.postMessage

Su cuaderno de aceptación

Registre observaciones según los criterios de esta guía. El registro no es una certificación.

El cuaderno no guarda automáticamente. Exporte antes de salir.

Indicadores de gestión

IndicadorQué midePrimera acción
Casos inesperados rechazadosCasos negativos sin efectos / casos negativos ejecutadosRegistrar origen, ventana y estado
Intercambios aprobados completadosEscenarios previstos terminados / escenarios probadosSeparar recepción y efecto confirmado

Errores comunes

    Preguntas frecuentes

    ¿Basta con comprobar event.origin?

    No. Comprueba ventana, estructura y estado. El servidor debe verificar permisos para la acción solicitada.

    Referencias oficiales

    Las referencias respaldan el método. Adapte los controles a su contexto; no constituyen certificación. Los títulos de referencia originales y los documentos fuente pueden estar en otro idioma.

    Referencias consultadas el .