文章不易,請關注公眾號 毛毛蟲的小小蠟筆,多多支持,謝謝。
概念
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....
效果如下截圖所示:
詳情 請查看:毛毛蟲的小小蠟筆