设置HTTP头X-Frame-Options防止网页被iframe框架调用
最近使用360的网站检测了一下博客,提示了一个漏洞 [轻微]X-Frame-Options头未设置
于是查了一下资料,修复了这个漏洞,记录一下。
html里面有一个iframe标签,可以把别的站引入到当前的页面中来,但如果我们不想别人引入我们的站,我们就可以设置这个X-Frame-Options头来限制。
|
|
博客使用的是apache+linux环境,在apache文件中httpd.conf中加入,在最后加就行了
|
|
我这里选择的参数是 SAMEORIGIN , 是希望以后万一自己站要引用自己站的页面,还是可以的。
推荐在外面加上这个
切换到apache目录的bin目录下,使用命令:
|
|
-M是查看静态模块+动态模块,也就是apache加载的所有模块,如果你看到有这个
headers_module (shared)
那就表示是有的.
重启apache
使用curl命令来测试一下
|
|
如果看到返回信息中有X-Frame-Options: SAMEORIGIN那就是设置好了.
再来写一个测试页面测试一次,在自己电脑上新建一个html文件,里面内容写上:
|
|
网址就自己换咯,用浏览器打开如果是空白就对了.
打开firebug,会看到这些信息
Refused to display ‘http://www.buyucoder.com/' in a frame because it set ‘X-Frame-Options’ to ‘sameorigin’.
就表示正常工作啦。
当然你也可以拿github试试:
|
|
控制台里面返回:
Refused to display ‘https://github.com/' in a frame because an ancestor violates the following Content Security Policy directive: “frame-ancestors ‘none’”.
用firebug看下请求的头,里面有:X-Frame-Options:deny
除了这个还有一个:Content-Security-Policy (简称CSP)
|
|
这个就不多说了,感兴趣的可以自己多了解哦.文章最后有相关文章
上面这种设置其实就是apache中header头的设置方法,我们可以通过这个来控制其他的http头,在apache手册里面可以找到更多的资料,自行参阅。
由于手上暂时没有ngnix和IIS,所以这一部分就没有测试了。不过你可以在下面的链接中找到答案。
关于X-Frame-Options的一些介绍:
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/X-Frame-Options
关于apache的mod_headers模块说明中文版:
http://works.jinbuguo.com/apache/menu22/mod/mod_headers.html
关于apache的mod_headers模块说明英文版:
https://httpd.apache.org/docs/current/mod/mod_headers.html
关于CSP的一些介绍:
https://developer.mozilla.org/zh-CN/docs/Web/Security/CSP/CSP_policy_directives