HTTP Security Report上分

24. 五月 2017 服务器 0

HTTP Security Report是一个用来评估网站安全度的网站,里面有很多安全性指标。在动笔开始写这篇文章的时候,本站的评分是这样的:

昂,也并不是真的从0开始,还是得了点分的,毕竟Server Clock侥幸还是对的,PHP也都设置了production mode,wp也有cache control。接下来我们就要一项一项地攻破剩下的项目了。

HTTPS配置

这篇 博文中记录了我升级HTTPS和HTTP2的历程,进行完这次升级之后,我们的评分稍有提高。

Content Security Policy

关于CSP的由来可以参考:Content Security Policy介绍,里面有很详细的设置。

但是在设置自己nginx的header的时候,要废一番功夫,我是开着F12一遍一遍刷新看console,最后才把CSP搞定的……

Frame Options

这个应该是X-Frame-Options头,说明在这里,大概意思是说是否允许本页面在一个iframe中被展示(比如一些网页代理服务),在这里我们设置为允许同源即可:

Content Type Options

这个是头是由IE8引入的,以下选项可以关闭IE8根据拓展名自动判断MIME类型的功能。。。。。介绍来自MDN

Subresource Integrity

这个主要是对要引用的资源进行校验,将校验值写入到引用标签的integrity属性中,防止托管在第三方(如CDN)的文件被篡改,如:

参考Subresource Integrity介绍。在Wordpress中有SRI manager插件,下载启用即可。

Public Key Pins

HTTP Public Key Pinning (HPKP)大概意思是说在http头中指定一些可信任的CA,使浏览器不会接受其他CA对该网站的签名,目的是防止中间人攻击:如果攻击者拥有某个可信的CA证书(称为X),然后他篡改了网站并使用X对被攻击的网站进行签名,浏览器会因此信任X签名的被篡改的网站。

具体方法是先用链接中后面的命令来获得证书的加密指纹,然后加入http头中:

Server Banner

搜了一下字面意思没搜到 = =。。。看了下页面上的提示马上懂了。。就是说隐藏http回包里的cgi版本。

其实这个东西在编译nginx的时候改一下#define的内容就好了。。不过这是修改,不是隐藏。隐藏的话,只需要在nginx.conf的http块加上 server_tokens off; 就可以了。

Cache Control

这个也是http头,cache-control,意义是告诉浏览器页面的缓存方式,有public、private、no-cache等等,还可设置参数,详细可参考这里。博客通常cache一下是无所谓的,但是可能有用户验证信息,所以我这里设置了 add_header Cache-Control 'private, max-age=600';

Web framework Information

昂。。大概意思就是说X-Powered-By, X-Runtime, X-Version 和 X-AspNet-Version不要出现在头部里,可能有潜在安全隐患(比如你的对应fpm有0-day之类的黑客就知道了)。。检测网站也提供了一篇文文章做参考:Shhh… don’t let your response headers talk too loudly,但是好像对nginx服务器没啥用。。。

这个主要看自己现在有哪里返回多余吧。目前我看到的是我的服务器会返回x-powered-by字段,如果是PHP信息,可以直接在php.ini里设置 expose_php=Off ,但是我这个好像不是(是W3C Total Cache啥的……)

 

做到这里我们已经有88分了,但是还有两项没有搞定

 

HTTP Strict Transport Security

HSPS也是一个http头,当设置了这个头的时候,浏览器就会把该站点加入HSPS列表,并使用https协议访问。MDN也有相关文档,但是我照说明hstspreload.org上把yiz96注册HSTS之后,子站点还是不认……

Web framework Infomation

大概就是说最好移除http回包里X-runtime、version之类的字段。目前我的nginx这些字段都是编译时mock的……如果想移除可以通过一些nginx插件来搞,比较懒,反正从安全角度上这一点已经没啥问题了……

 


发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据