动态

详情 返回 返回

window.name和postMessage跨域詳解 - 动态 详情

文章不易,請關注公眾號 毛毛蟲的小小蠟筆,多多支持,謝謝。

概念

window.name

1、在一個窗口還沒關閉之前,同一個窗口的所有頁面都共享同一個window.name。

這個窗口可理解為chrome瀏覽器的一個tab標籤頁面。另外,從一個頁面中跳轉到另一個頁面後,這些頁面都共享同一個window.name。

2、每個頁面都能讀和寫window.name。

這個可能就是安全問題的來源。

3、window.name在chrome上可存儲小於等於2MB的數據。

postMessage

可以安全地實現的跨源通信。

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

事件:
window.addEventListener("message", receiveMessage, false);
message的屬性有:data, origin, source

安全問題比較

攻擊者頁面:A
受害者頁面:B

window.name的問題

1、可通過在A中嵌入B,實現在A獲取B的window.name的數據

2、如果B中存在eval執行window.name的代碼,則存在xss安全問題,因為在1的基礎上,A可修改window.name的數據,從而導致B出現xss問題

Demo

驗證問題1

A頁面地址:
http://localhost:3000/window....

B頁面地址:
http://localhost:3001/window....

效果如下截圖所示:
image.png



詳情 請查看:毛毛蟲的小小蠟筆

user avatar tinygeeker 头像 youyudeshangpu_cny857 头像 pxzsl 头像 mosquito_612af76da10ff 头像
点赞 4 用户, 点赞了这篇动态!
点赞

Add a new 评论

Some HTML is okay.