可能会收集有关 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个原文链接,所以只能设为原创。如果有需要,请原作者联系我,我会处理掉相应部分的内容。