2016-04-06 4 views
1

Большая часть содержимого, которое я нахожу в отношении window.postMessage и iframe, междоменное сообщение iframe, кажется датированным.Есть ли причина, по которой я не должен использовать API window.postMessage для современных браузеров, после 2016 года?

Для современных браузеров> = IE9 .. кажется, что vanilla js window.postMessage хватит. В сравнении с более крупным пакетом, например easyXDM или другими.

http://caniuse.com/#search=postMessage

Что мне не хватает?

ответ

0

Ее главным образом вопрос безопасности:

Любое окно (в том числе, например, http://evil.example.com) может послать сообщение любому другому окну, и у вас нет никаких гарантий, что неизвестный отправитель не будет посылать вредоносные сообщения. Однако, подтвердив личность, вы все равно должны всегда проверять синтаксис полученного сообщения. В противном случае отверстие безопасности на сайте, которому вы доверяли отправлять только доверенные сообщения, могло затем открыть межсайтовый сценарий на вашем сайте.

Далее, если вы отправить с помощью PostMessage вы открываете себя, что данные перехватываются злонамеренным сайта:

Вредоносный сайт может изменить расположение окна без вашего ведома, и поэтому его могут перехватывать данные, отправленные с помощью postMessage.

Кроме того, параметр передачи, в то время как дополнительный, не является стандартным во всех браузерах:

otherWindow.postMessage(message, targetOrigin, [transfer]); 

Link to MDN docs

+2

вопросы безопасности, вы отмечаете возникают, когда вы не используете API должным образом - сбой или игнорирование проверки отправителя, или не указание цели экземпляра. При правильном использовании это безопасно, как указано в статье. –

+0

Согласен 100% - ключевое слово 'if' – JordanHendrix

Смежные вопросы