2015-09-21 103 views
2

我很難理解對postMessage()方法的targetOrigin使用通配符時的安全問題。您調用postMessage()的窗口是否已經有我們發送數據的來源?有人會如何幹預?使用window.location.origin將targetOrigin設置爲窗口的原點會不好?爲什麼使用'*'作爲postMessage的targetOrigin存在安全風險?

我明白在接收端檢查事件源的重要性(如圖所示here),但似乎無法包裝我的頭,爲什麼當發送端使用通配符作爲targetOrigin時,該窗口已具有特定的來源。

回答

4

這本身並不是一個風險。這只是意味着任何人都可以將您的內容嵌入到框架中,並閱讀您通過API發送的消息。如果信息可以安全地信任任何人,那很好。如果數據應該在您的網站,訪問者和特定合作伙伴網站之間保持私密性,那麼您應該對消息內容信任的人更加謹慎。

顯式給予請求來自的任何來源的權限實際上與使用'*'相同。如果數據需要保密,您應該過濾原始白名單。

相關問題