父頁面操做iframe子頁面的安全漏洞及跨域限制問題

1、父子交互的跨域限制css

同域狀況下,父頁面和子頁面能夠經過iframe.contentDocument或者parent.document來交互(彼此作DOM操做等,如父頁面往子頁面注入css)。ajax

跨域狀況下,就會有限制,沒法相互操做。跨域

【解決辦法】安全

1.主域不一樣
  沒招cookie

2.主域相同,子域不一樣
  以父(a.baidu.com)子(b.baidu.com)爲例:
  這倆頁面相互操做,要是想解決跨域限制,必須設置一個共同的主域,即document.domain="baidu.com"dom

 

2、禁止父頁面操做子頁面xss

如今不少公司的各個業務線都使用了同一套通行證體系,有時候爲了方便不一樣業務線接口間的相互調用,會把a.baidu.com、b.baidu.com等的domain都設置爲baidu.com,這就形成了必定的安全隱患。網站

黑客能夠經過尋找某個安全防範較薄弱的業務線網站,好比c.baidu.com,繞過字符過濾注入xss攻擊代碼,在c.baidu.com的頁面中建立一個x.baidu.com的iframe,往iframe中注入js代碼,而後利用共享的通行證中的cookie和token,調用x.baidu.com中的某些ajax請求,對x.baidu.com進行跨站攻擊。url

【屏蔽掉此漏洞方案】spa

1.營造跨域,如上所述,跨域狀態下,父子無權互相操做。各業務線的document.domain在使用完主域以後,必定要及時設置回本身的二級域名去。

2.禁止本站頁面被其餘頁面以iframe形式調用。判斷當前頁若是被iframe包含,那麼就改變當前頁的url,從而避免被繼續注入js腳本。

代碼以下:

if (window.location.href!==top.location.href) location.href = "about:blank";//直接用window !== top(ie7-布爾值異常)跳轉至空頁面 也能夠是任意url。如,http://ni.nongshalei

相關文章
相關標籤/搜索