iframe跨域安全


1.響應頭X-Frame-Options

響應頭X-Frame-Options是用來給瀏覽器指示允許一個頁面可否在<frame>,<iframe>,<object>中展現的標記。網站可以使用此功能,來確保自己網站的內容沒有被嵌套到其他網站中去,也從而避免了點擊劫持 (clickjacking) 的攻擊。

支持的指令

  • DENY
    表示該頁面不允許在frame中展示,即便是在相同域名的頁面中嵌套也不允許。
  • SAMEORIGIN
    表示該頁面可以在相同域名頁面的frame中展示。
  • ALLOW-FROM uri1,uri2
    表示該頁面可以在指定來源的frame中展示。

在nginx中配置

add_header X-Frame-Options DENY;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Frame-Options "ALLOW-FROM http://www.a.com,http:///www.b.com";

兼容性

ALLOW-FROM指令在除IE以外的很多瀏覽器中無效,如在chrome中報錯如下:

Invalid 'X-Frame-Options' header encountered when loading 'http://www.a.com':
 'ALLOW-FROM http://www.a.com' is not a recognized directive.
 The header will be ignored.

2.響應頭Content-Security-Policy

響應頭Content-Security-Policy允許網站管理員控制允許用戶代理為給定頁面加載的資源。除少數例外,策略主要涉及指定服務器源和腳本端點。這有助於防止跨站點腳本攻擊(XSS)。

支持的指令

  • frame-ancestors uri1 uri2
    允許一個頁面可否在<frame>,<iframe>,<object>,<embed>,或<applet>中展現。
    將此指令設置’none’為類似於X-Frame-Options: DENY

在nginx中配置

add_header Content-Security-Policy "frame-ancestors ‘none’";
add_header Content-Security-Policy "frame-ancestors http://www.a.com http://www.b.com";

兼容性

IE瀏覽器不支持

3.子域名跨域

site1.a.com

document.domain = "a.com";

site2.a.com

document.domain = "a.com"

將不同子域名的站點document.domain設置為相同的基礎域名,則可實現跨域訪問


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM