WEB安全防御总结一 : 响应头(X-Content-Type-Options、X-Frame-Options、X-XSS-Protection)

12 篇文章 0 订阅
9 篇文章 0 订阅

漏洞简介:

 可能会收集有关 Web 应用程序的敏感信息,如用户名、密码、机器名和/或敏感文件位置。

修复建议:

1. 响应头中存在 X-Content-Type-Options 属性,而且 X-Content-Type-Options 属性值包含“nosniff”。

2. 检测 HTTP X-Frame-Options 字段,字段值包含 deny 或 sameorigin。

3. 配置响应头“X-XSS-Protection”,且将值设为 1;mode=block ;不要重复多次配置“X-XSS-Protection”响应头。

处理方式:

有2种,但作者都用上了。

一. 在.htaccess文件中添加

在.htaccess文件中添加如下代码:

<IfModule mod_headers.c>

Header set X-Content-Type-Options: "nosniff"

Header set X-Frame-Options: "SAMEORIGIN"

Header set X-XSS-Protection: "1;mode=block"
 	
</IfModule>

需要注意的是,这里需要你开启 mod_headers.so ,作者是用的apache,所以是去找httpd.conf文件找到对应的mod_headers.so ,去掉它前面的#解开注释即可。最后代码如下:

LoadModule headers_module modules/mod_headers.so

二. 在PHP文件或Html文件中添加(在Html文件中添加好像不起效果的样子,可能是我的配置有问题吧。。)

1.X-Content-Type-Options:互联网上的资源有各种类型,通常浏览器会根据响应头的Content-Type字段来分辨它们的类型。例如:"text/html"代表html文档,"image/png"是PNG图片,"text/css"是CSS样式文档。然而,有些资源的Content-Type是错的或者未定义。这时,某些浏览器会启用MIME-sniffing来猜测该资源的类型,解析内容并执行。

        例如,我们即使给一个html文档指定Content-Type为"text/plain",在IE8-中这个文档依然会被当做html来解析。利用浏览器的这个特性,攻击者甚至可以让原本应该解析为图片的请求被解析为JavaScript。通过如下的响应头可以禁用浏览器的类型猜测行为:

PHP:

header("X-Content-Type-Options:nosniff");

HTML:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8; X-Content-Type-Options=nosniff; " />

2.X-XSS-Protection:顾名思义,这个响应头是用来防范XSS的。最早我是在介绍IE8的文章里看到这个,现在主流浏览器都支持,并且默认都开启了XSS保护,用这个header可以关闭它。

        浏览器内置了一个针对XSS攻击的防护机制,这个浏览器内置的防护机制就是所谓的XSS filter,这个防护机制主要用于减轻反射型XSS 攻击带来的危害。 基于Webkit 内核的浏览器(比如Chrome)随后也增加一个名为XSS auditor 的防护机制,作用和IE中的XSS filter类似。这两种XSS防护机制的目的都很简单,如果浏览器检测到了含有恶意代码的输入被呈现在HTML文档中,那么这段呈现的恶意代码要么被删除,要么被转义,恶意代码不会被正常的渲染出来,当然了,浏览器是否要拦截这段恶意代码取决于浏览器的XSS防护设置。

具体的值如下:

⑴ X-XSS-Protection:0 —  表示关闭浏览器的XSS防护机制;

⑵ X-XSS-Protection:1 — 删除检测到的恶意代码, 如果响应报文中没有看到X-XSS-Protection 字段,那么浏览器就认为X-XSS-Protection配置为1,这是浏览器的默认设置;

⑶ X-XSS-Protection:1; mode=block — 如果检测到恶意代码,在不渲染恶意代码;

总而言之, 至于设置成XSS-Protection: 0还是XSS-Protection: 1; mode=block取决于你的业务场景,如果在你的业务场景中,你认为你的程序或系统是不会有XSS漏洞的, 或者是无法承担XSS filter/auditor 特性引发的BUG,那你就选择配置成前者;否则,你还是选择配置成后者吧。 反正,老司机给你一句忠告就是,千万别配置成XSS-Protection: 1

PHP:

header("X-XSS-Protection: 1");

HTML:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8;  X-XSS-Protection: 1;mode=block" />

参考链接:安全隐患,你对X-XSS-Protection头部字段理解可能有误

3.X-Frame-Options

⑴.X-Frame-Options: DENY — 告诉浏览器不要(DENY)把这个网页放在iFrame内,通常的目的就是要帮助用户对抗点击劫持。
⑵X-Frame-Options: SAMEORIGIN — 告诉浏览器只有当架设iFrame的网站与发出X-Frame-Options的网站相同,才能显示发出X-Frame-Options网页的内容。
⑶X-Frame-Options: ALLOW-FROM http://caibaojian.com/ — 告诉浏览器这个网页只能放在http://caibaojian.com//网页架设的iFrame内。

不指定X-Frame-Options的网页等同表示它可以放在任何iFrame内。

X-Frame-Options可以保障你的网页不会被放在恶意网站设定的iFrame内,令用户成为点击劫持的受害人。

PHP:

header('X-Frame-Options: SAMEORIGIN');

HTML:

<meta http-equiv="X-Frame-Options" content="deny">

参考链接:X-Frame-Options防止网页放在iframe中

注:因为参考了3篇文章,转载类型无法添加3个原文链接,所以只能设为原创。如果有需要,请原作者联系我,我会处理掉相应部分的内容。

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值