您的位置:首頁(yè) > 菜鳥(niǎo)學(xué)院 > HTML5跨域消息發(fā)送安全性分析
通過(guò)使用postMessage()的方法,我可以輕松的將消息從第一個(gè)URL發(fā)送到第二個(gè)URL.
我們可以通過(guò)點(diǎn)擊”send message“的按鈕來(lái)進(jìn)行驗(yàn)證。
盡管加載在第一個(gè)URL中的iframe與其并不同源,但通過(guò)postMessage() 即可進(jìn)行信息傳遞。
現(xiàn)在我們來(lái)看一些postMessage()使用過(guò)程中可導(dǎo)致應(yīng)用出現(xiàn)漏洞的例子:
case1.
發(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)字段,如下所示:
Case2.
接收窗口代碼:
在上面這段代碼中可以看到,我們是直接接收發(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)題就可解決了。代碼如下:
通過(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ā)送方:
接收方:
執(zhí)行上面這段代碼,可導(dǎo)致在接收窗口出現(xiàn)XSS。
解決這一問(wèn)題最簡(jiǎn)單的方法就是在給元素分配數(shù)據(jù)值時(shí)使用 textContent 而不是innerHTML.
小編推薦閱讀國(guó)產(chǎn)工具PKAV HTTP Fuzzer滲透測(cè)試助手最新發(fā)布
閱讀FireEye:11.2%的移動(dòng)APP仍存在FREAK漏洞
閱讀惠普漏洞:惠普ArcSight企業(yè)安全系列產(chǎn)品曝高危安全漏洞
閱讀騰訊、360各顯神通,分別秒殺IE、Flash、PDF項(xiàng)目
閱讀蘋(píng)果Mac OS X系統(tǒng)被發(fā)現(xiàn)存在DLL劫持漏洞
閱讀金融行業(yè)平臺(tái)的針對(duì)性防御滲透測(cè)試
閱讀D-Link(友訊)路由器曝遠(yuǎn)程文件上傳及命令注入漏洞(已發(fā)布安全更新)
閱讀Win10將使用P2P進(jìn)行系統(tǒng)更新,引發(fā)安全擔(dān)憂
閱讀美國(guó)最大的無(wú)卡ATM網(wǎng)絡(luò)即將推出,從此告別刷卡!
閱讀谷歌應(yīng)用漏洞泄漏超過(guò)28萬(wàn)條私人WHOIS數(shù)據(jù)
閱讀使命召喚、魔獸世界、英雄聯(lián)盟……專(zhuān)攻游戲的勒索軟件TeslaCrypt
閱讀本站所有軟件,都由網(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)