• 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设置为相同的基础域名,则可实现跨域访问

  • 相关阅读:
    解决Django在mariadb创建的表插入中文乱码的问题
    运行在CentOS7.5上的Django项目时间不正确问题
    获取百度网盘真实下载连接
    Django2.x版本在生成数据库表初始化文件报错
    Pycharm中的Django项目连接mysql数据库
    Django2.x版本路由系统的正则写法以及视图函数的返回问题
    CentOS7.5安装坚果云
    CentOS7.5安装下载工具
    CentOS6.5修改/etc/pam.d/sshd后root无法ssh登陆
    oracle 时间
  • 原文地址:https://www.cnblogs.com/luguojun/p/14294685.html
Copyright © 2020-2023  润新知