黑帽联盟

 找回密码
 会员注册
查看: 2032|回复: 2
打印 上一主题 下一主题

[系统安全] iis、apache、nginx使用X-Frame-Options防止网页被Frame的解决方法

[复制链接]

295

主题

18

听众

965

积分

管理员

Rank: 9Rank: 9Rank: 9

  • TA的每日心情
    难过
    2024-11-13 00:16
  • 签到天数: 370 天

    [LV.9]以坛为家II

    X-Frame-Options HTTP响应头是用来确认是否浏览器可以在frame或iframe标签中渲染一个页面,网站可以用这个头来保证他们的内容不会被嵌入到其它网站中,以来避免点击劫持

    当然也是因为被360检测到了示"X-Frame-Options头未设置",根据360的提示与百度了一些网上的一些资料整理了下,完美解决问题。
    首先看下360给出的方案,但么有针对服务器的具体设置,不是每个人对服务器都很懂啊。
    描述: 目标服务器没有返回一个X-Frame-Options头。
    X-Frame-Options HTTP响应头是用来确认是否浏览器可以在frame或iframe标签中渲染一个页面,网站可以用这个头来保证他们的内容不会被嵌入到其它网站中,以来避免点击劫持。
    危害: 攻击者可以使用一个透明的、不可见的iframe,覆盖在目标网页上,然后诱使用户在该网页上进行操作,此时用户将在不知情的情况下点击透明的iframe页面。通过调整iframe页面的位置,可以诱使用户恰好点击iframe页面的一些功能性按钮上,导致被劫持。
    解决方案:
    修改web服务器配置,添加X-frame-options响应头。赋值有如下三种:
    (1)DENY:不能被嵌入到任何iframe或frame中。
    (2)SAMEORIGIN:页面只能被本站页面嵌入到iframe或者frame中。
    (3)ALLOW-FROM uri:只能被嵌入到指定域名的框架中。
    也可在代码中加入,在PHP中加入:
    1. header('X-Frame-Options: deny');
    复制代码
    下面继续来看下脚本之家从网上整理的更详细的方法
    防止网页被Frame,方法有很多种;
    方法一: 常见的比如使用js,判断顶层窗口跳转:
    1. (function () {
    2. if (window != window.top) {
    3. window.top.location.replace(window.location); //或者干别的事情
    4. }
    5. })();
    复制代码
    一般这样够用了,但是有一次发现失效了,看了一下人家网站就是顶层窗口中的代码,发现这段代码:
    游客,如果您要查看本帖隐藏内容请回复

    轻轻松松被破解了,悲剧。

    方法二: meta 标签:基本没什么效果,所以也放弃了:
    1. <meta http-equiv="Windows-Target" contect="_top">
    复制代码
    方法三:使用HTTP 响应头信息中的 X-Frame-Options属性
    使用 X-Frame-Options 有三个可选的值:
    DENY:浏览器拒绝当前页面加载任何Frame页面
    SAMEORIGIN:frame页面的地址只能为同源域名下的页面
    ALLOW-FROM:origin为允许frame加载的页面地址
    绝大部分浏览器支持:
    Feature
    Chrome
    Firefox (Gecko)
    Internet Explorer
    Opera
    Safari
    Basic support4.1.249.10423.6.9(1.9.2.9)8.010.54.0


    配置 IIS
    IIS6中通过HTTP头设置即可
    20170324201609.png

    IIS7中可以通过web.config也可以通过类似上面的设置
    配置 IIS 发送 X-Frame-Options 响应头,添加下面的配置到 Web.config 文件中:
    1. <system.webServer>
    2. ...

    3. <httpProtocol>
    4.   <customHeaders>
    5.    <add name="X-Frame-Options" value="SAMEORIGIN" />
    6.   </customHeaders>
    7. </httpProtocol>

    8. ...
    9. </system.webServer>
    复制代码
    图文界面设置
    20170324213455.jpg

    配置 Apache
    配置 Apache 在所有页面上发送 X-Frame-Options 响应头,需要把下面这行添加到 ‘site' 的配置中:
    1. Header always append X-Frame-Options SAMEORIGIN
    复制代码
    配置 nginx
    配置 nginx 发送 X-Frame-Options 响应头,把下面这行添加到 ‘http', ‘server' 或者 ‘location' 的配置中:
    1. add_header X-Frame-Options SAMEORIGIN;
    复制代码
    HAProxy配置
    1. rspadd X-Frame-Options:\ SAMEORIGIN
    复制代码
    tomcat 与X-Frame-Options
    公司项目是只用了tomcat作为web服务器 ,网上搜的的内容好像并不符合我的要求。
    本来的想法是在每个jsp页面中加
    1. <%
    2. response.addHeader("x-frame-options","SAMEORIGIN");
    3. %>
    复制代码
    可后来想想这种方法太蠢,万一过不了测试还要改过来。
    于是又想到了一个方法,在项目原本的过滤器中加了如下代码
    1. HttpServletResponse response = (HttpServletResponse) sResponse;
    2. response.addHeader("x-frame-options","SAMEORIGIN");
    复制代码
    貌似起了作用  等待客户测试吧!

    结果
    在 Firefox 尝试加载 frame 的内容时,如果 X-Frame-Options 响应头设置为禁止访问了,那么 Firefox 会用 about:blank 展现到 frame 中。也许从某种方面来讲的话,展示为错误消息会更好一点。
    用虚拟主机的用户怎么办呢
    PHP和JSP等动态文件更方便
    改一下头信息
    PHP代码:
    1. header(‘X-Frame-Options:SAMEORIGIN');
    复制代码
    JSP代码:
    1. response.setHeader(“X-Frame-Options”,”SAMEORIGIN”);
    复制代码
    ASP代码:
    1. <%Response.AddHeader "X-Frame-Options","SAMEORIGIN"%>
    复制代码
    ASP.NET代码:
    1. Response.AddHeader("X-Frame-Options", "Deny");
    复制代码
    还是那句话如果确认你整个网站都不能被框架,可以直接设置web服务器,增加X-Frame-Options响应头。IIS如下图所示,增加http头,参考上面的iis6与iis7中的设置方法


    浏览器对X-Frame-Options响应头的支持如下
    浏览器版本支持  IE8.0+Firefox3.6.9+Opera10.50+Safari4.0+Chrome4.1.249.1024+
    帖子永久地址: 

    黑帽联盟 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与黑帽联盟享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和黑帽联盟的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、黑帽联盟管理员和版主有权不事先通知发贴者而删除本文

    49

    主题

    1

    听众

    248

    积分

    至尊VIP

    Rank: 8Rank: 8

  • TA的每日心情
    奋斗
    2018-7-15 21:02
  • 签到天数: 215 天

    [LV.7]常住居民III

    看看,内容挺多的
    回复

    使用道具 举报

    52

    主题

    2

    听众

    310

    积分

    黑帽学员

    Rank: 3Rank: 3

  • TA的每日心情
    奋斗
    2019-9-27 16:27
  • 签到天数: 258 天

    [LV.8]以坛为家I

    谢谢,学习了,好文章
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 会员注册

    发布主题 !fastreply! 收藏帖子 返回列表 搜索
    回顶部