什麼是最好的(最安全的)方式來限制哪些網站可以通過網絡應用嵌入iframe?如何限制iframe嵌入我的web應用程序的人員?
例如,每個人都應該被剝奪誰是不在名單上:
- www.myFriend.com
- www.anotherFriend.com
- www.myThirdFriend.com
作爲後續問題,鑑於上述任何限制,尋找服務器端哪一個白名單網站正在進行嵌入的最安全的方法是什麼?
什麼是最好的(最安全的)方式來限制哪些網站可以通過網絡應用嵌入iframe?如何限制iframe嵌入我的web應用程序的人員?
例如,每個人都應該被剝奪誰是不在名單上:
作爲後續問題,鑑於上述任何限制,尋找服務器端哪一個白名單網站正在進行嵌入的最安全的方法是什麼?
使用X-Frame-Options
HTTP header。
X-Frame-Options ALLOW-FROM http://example.com/
又見它有這個建議的MSDN documentation:
注意,允許 - 從令牌不支持通配符或列出多個來源的 。對於在服務器希望允許在一個頁面更 幀的內容的情況下,下面的設計模式是 推薦:
- 外IFRAME提供它自己的來源的信息,使用在內部IFRAME的一個 查詢參數src屬性。這可以明顯由攻擊者指定,但這沒關係。
- 服務器內部IFRAME驗證提供的Origin信息符合 商業實踐要求的任何標準。例如,服務於包含社交網絡「贊」按鈕的IFRAME的服務器 可能會檢查提供的Origin是否與該Like按鈕的原始 匹配,並且指定的 Origin的所有者具有有效聯屬關係,等等
- 如果與供給的 信息滿足,用於內IFRAME服務器發送一個 X-FRAME-OPTIONS:允許-從suppliedorigin頭
- 然後,瀏覽器 強制執行X-FRAME-OPTIONS指示。
X框-選項響應頭
使用X框-選項 有用於X幀 - 選項三個可能的值:
DENY
: 頁面無法顯示在框架中,reg試圖這樣做的網站很少。SAMEORIGIN
: 該頁面只能顯示在與頁面本身相同的源框架中。ALLOW-FROM uri
: 頁面只能顯示在指定原點的框架中。