您的位置:首頁(yè) > 菜鳥(niǎo)學(xué)院 > HTML5跨域消息發(fā)送安全性分析

HTML5跨域消息發(fā)送安全性分析

來(lái)源:互聯(lián)網(wǎng) | 時(shí)間:2015-03-11 11:07:02 | 閱讀:163 |  標(biāo)簽: 網(wǎng)絡(luò)安全 HTML5   | 分享到:

HTML5跨域消息發(fā)送安全性分析

通過(guò)使用postMessage()的方法,我可以輕松的將消息從第一個(gè)URL發(fā)送到第二個(gè)URL.

我們可以通過(guò)點(diǎn)擊”send message“的按鈕來(lái)進(jìn)行驗(yàn)證。

HTML5跨域消息發(fā)送安全性分析

盡管加載在第一個(gè)URL中的iframe與其并不同源,但通過(guò)postMessage() 即可進(jìn)行信息傳遞。

現(xiàn)在我們來(lái)看一些postMessage()使用過(guò)程中可導(dǎo)致應(yīng)用出現(xiàn)漏洞的例子:

case1.

發(fā)送方代碼:

HTML5跨域消息發(fā)送安全性分析

當(dāng)發(fā)送者把targetOrigin規(guī)定為通配符”*“時(shí),將會(huì)導(dǎo)致未知的信息被陌生的接收方(窗口)接收到。原因是從接收窗口傳來(lái)的消息任何人都可以再加載一個(gè)iframe來(lái)進(jìn)行監(jiān)聽(tīng)。因此在進(jìn)行敏感數(shù)據(jù)的傳輸時(shí),使用通配符是一個(gè)十分錯(cuò)誤的決定。

針對(duì)此問(wèn)題最好的解決方法就是在發(fā)送時(shí)添加具體的目標(biāo)字段,如下所示:

HTML5跨域消息發(fā)送安全性分析 

Case2.

接收窗口代碼:

HTML5跨域消息發(fā)送安全性分析 

在上面這段代碼中可以看到,我們是直接接收發(fā)送方的消息對(duì)其進(jìn)行處理,并不檢驗(yàn)是否來(lái)自發(fā)送方。

但檢查消息的來(lái)源無(wú)疑是十分重要的,這樣可以防止消息來(lái)自未經(jīng)授權(quán)的發(fā)送者。

因此,我們只需要在代碼中加入對(duì)發(fā)送方的驗(yàn)證,這一問(wèn)題就可解決了。代碼如下:

HTML5跨域消息發(fā)送安全性分析

通過(guò)檢驗(yàn)event.origin,來(lái)進(jìn)行驗(yàn)證。

Case3.

在這一過(guò)程中,發(fā)送方和接收方都應(yīng)該驗(yàn)證正在傳送的.消息。如果數(shù)據(jù)插入到HTML DOM中時(shí)并沒(méi)有進(jìn)行驗(yàn)證,那么應(yīng)用很有可能遭受到基于DOM的跨站腳本攻擊。

由下面這段代碼可以看出,當(dāng)應(yīng)用程序接收到攻擊者發(fā)來(lái)的惡意信息,并已經(jīng)插入到HTML DOM使用innerHTML屬性時(shí),其顯得異常脆弱。

發(fā)送方: 

HTML5跨域消息發(fā)送安全性分析

接收方: 

HTML5跨域消息發(fā)送安全性分析

執(zhí)行上面這段代碼,可導(dǎo)致在接收窗口出現(xiàn)XSS。

HTML5跨域消息發(fā)送安全性分析

解決這一問(wèn)題最簡(jiǎn)單的方法就是在給元素分配數(shù)據(jù)值時(shí)使用 textContent 而不是innerHTML.

小編推薦閱讀

好特網(wǎng)發(fā)布此文僅為傳遞信息,不代表好特網(wǎng)認(rèn)同期限觀點(diǎn)或證實(shí)其描述。

相關(guān)視頻攻略

更多

掃二維碼進(jìn)入好特網(wǎng)手機(jī)版本!

掃二維碼進(jìn)入好特網(wǎng)微信公眾號(hào)!

本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請(qǐng)發(fā)郵件[email protected]

湘ICP備2022002427號(hào)-10 湘公網(wǎng)安備:43070202000427號(hào)© 2013~2025 haote.com 好特網(wǎng)