Веб размена порука
Веб размена порука или унакрсна размена докумената је АПИ уведен у стандарду WHATWG HTML5, омогућавајући тако документима да комуницирају једни са другима преко различитих порекла или изворних домена[1] , када се приказују у веб-прегледачу. Пре HTML5 верзије, веб прегледачи нису дозвољавали тзв. унакрсно-сајт скриптовање ради заштите од безбедносних напада. Добро је познато да ова пракса забране комуникације између не-непријатељских страна отежава било коју интеракцију међу документима.[1][2] Веб размена порука омогућава скриптама да комуницирају преко тих граница, пружајући основни ниво сигурности.
Захтеви и атрибути
уредиКористећи метод postmessage
овог АПИ-ја, текстуалне поруке могу бити послате са једног домена на други, на пример, из родитељског документа ка iframe прозору.[3] Захтев за ово је да аутор прво мора да добије Window
објекат докумената пријема. Као резултат тога, поруке могу бити постављене
на следеће:[2]
- друге оквире или оквире унутар прозора пошиљалаца документа
- прозоре које пошиљалац докумената експлицитно отвори кроз JavaScript позиве
- прозор родитеља пошиљаоца документа
- прозор који отвара пошиљалац документа
Порука event
која пристиже, има следеће атрибуте:
data
— Подаци, или стварни садржај, долазне поруке.origin
— Порекло пошиљаоца документа. То обично укључује шему, име хоста и порт. Он не укључује путању или идентификатор фрагмената.[1]source
— уWindowProxy
, одакле је овај документ дошао (изворни прозор).
Метод postmessage
не блокира позив; поруке се обрађују асинхроно.[4]
Пример
уредиСледећи случај ће бити разматран: жели се да документ А који је учитан из example.net
комуницира са документом Б који је учитан из example.com
у одређени iframe прозор
или искачући прозор.[1] У језику JavaScript код за документ А ће имати следећи облик:
var o = document.getElementsByTagName('iframe')[0]; o.contentWindow.postMessage('Hello B', 'http://example.com/');
Порекло contentWindow
објекта је прослеђено методи postmessage
. Он мора да одговара пореклу
документа са којим се жели да комуницира (у овом случају, документ Б). У супротном ће бити испаљена безбедносна грешка и код из скрипте ће престати да се извршава.[3] JavaScript код за документ Б ће изгледати овако:
function receiver(event) { if (event.origin == 'http://example.net') { if (event.data == 'Hello B') { event.source.postMessage('Hello A, how are you?', event.origin); } else { alert(event.data); } } } window.addEventListener('message', receiver, false);
Догађај слушаоца је подешен да прима поруке од документа А. Користећи порекло
врши се провера да ли је домен пошиљаоца заправо и очекивани домен. Документ Б затим прегледа поруку, или је приказује кориснику, или сам одговара поруком документу А.[1]
Безбедност
уредиСлаба провера порекла може представљати ризик за апликације које употребаљавају овакав начин унакрсне размене докумената.[5] Да би били заштићени од злонамерног
кода од стране других домена, аутори би требало да провере атрибут порекла
како би се осигурало да поруке примљене од стране других домена буду проверене одакле долазе. Формат долазних података такође треба бити проверен, да ли се поклапа са форматом очекиваних података.[1]
Подршка
уредиПодршка за унакрсну размену докумената постоји у садашњим верзијама Интернет експлорер, Мозила фајерфокс, Сафари, Гугл кроум, Опера, Опера Мини, Опера Мобил и Андроид веб прегледач.[6] Подршка за API постоји у Тридент, Геко, комбиновањем Вебкита и Преста.[7]
Види још
уредиРеференце
уреди- ^ а б в г д ђ Cross-Document Messaging — HTML Draft Standard
- ^ а б WebKit DOM Programming Topics — Cross Document Messaging
- ^ а б Remy, Sharp, Messages, Workers, and Sockets, Introducing HTML5, New Riders, (2011). стр. 197—199
- ^ HTML5 Web Messaging
- ^ HTML5 Security in a Nutshell
- ^ When can I use Cross-Document Messaging?
- ^ „A Selection of Supported Features in HTML5”. Архивирано из оригинала 12. 11. 2011. г. Приступљено 29. 05. 2016.
Спољашње везе
уреди- Препоруке HTML5 веб система за размену порука
- Спецификација HTML5 веб система за размену порука Архивирано на сајту Wayback Machine (24. децембар 2010)
- Cross-Document Messaging – HTML Draft Standard, WHATWG
- WebKit DOM Programming Topics – Cross Document Messaging, Apple Developer Library
- Eng, Chris (17. 5. 2010), HTML5 Security in a Nutshell, Veracode
- When can I use Cross-Document Messaging?, CanIUse
- A Selection of Supported Features in HTML5, Архивирано из оригинала 12. 11. 2011. г., Приступљено 29. 05. 2016