У меня есть две веб-страницы в разных доменах, и я контролирую код обеих страниц.
Домен-A открывает Домен-B, используя window.open
, а затем Domain-B выполняет некоторую обработку на стороне клиента (может ' не может быть перемещен на сервер), а затем использует postMessage
для публикации результатов.
Но перед публикацией этих результатов я хочу убедиться, что window.opener
на самом деле я.
Проблема в следующем: Домен-A изменяется и может быть любым (клиенты размещают мое приложение на своих собственных доменах), в то время как Домен-B исправлен. Поэтому я не могу просто установить targetOrigin
в моем postMessage
, потому что источник все время отличается. Я знаю, что могу просто использовать '*'
, и он будет работать нормально, но это недостаточно безопасно.
Поэтому перед отправкой postMessage
я хочу убедиться, что моя страница действительно была window.opened
по моему коду , в то время как домен, в котором размещен код - меняется.
Единственное решение, которое я придумал, это asyn c -криптография. Добавьте в window.open
строку запроса подписи, зашифрованную ключом c, и затем проверьте эту подпись, используя crypto.subtle.verify
в Домене-B, используя парный ключ.
Я на правильном пути? Есть ли более простые варианты или даже лучшие практики? Похоже, я изобретаю колесо здесь ...