http协议有许多可以增强网站安全性,减少用户被攻击的安全策略,本文将依次介绍
1、强制使用https传输,HTTP Strict Transport Security (HSTS)
在各种劫持小广告+多次跳转的网络环境下,可以有效缓解此类现象。同时也可以用来避免从https降级到http攻击(SSL Strip)
服务器设置响应头:Strict-Transport-Security: max-age=31536000 ; includeSubDomains 即可开启
网站(譬如百度)启用该策略后且在有效期之内,用户在浏览器地址栏输入baidu.com后,浏览器不会经历该过程:baidu.com--->http://www.baidu.com--->https://www.baidu.com;而是直接访问https://www.baidu.com
该策略只适用于80、443端口。
有些网站并不是全站https比如图片,毕竟使用https对服务器性能要求更高,中间人攻击仍然可以修改用户看到的图片
ps:在chrome浏览器和let's encrypt的推动下,不久的将来希望可以进入https时代
这里有个更详细的:https://www.jianshu.com/p/caa80c7ad45c
2、HTTPS证书绑定,Public Key Pinning Extension for HTTP (HPKP)
浏览器依据证书链认证https证书,任何合法证书链均可以给某个域名(baidu.com)颁发一个https证书。如果要提高安全性,减少中间人攻击,我们可以明确指定证书指纹提供给浏览器进行身份验证
服务器设置响应头:Public-Key-Pins: pin-sha256="d6qzRu9zOECb90Uez27xWltNsj0e1Md7GkYYkVoZWmM="; pin-sha256="E9CZ9INDbd+2eRQozYqqbQ2yXLVKB9+xcprMF+44U1g="; report-uri="http://example.com/pkp-report"; max-age=10000; includeSubDomains
有效期设置过长,可能会存在域名证书失效,网站不可访问等特殊情况
3、跨站XSS防护,X-XSS-Protection
开启浏览器端的xss防护,减少反射xss对用户的危害(chrome浏览器默认开启)
服务器配置响应头:X-XSS-Protection: 1; mode=block / 1; report=http://[YOURDOMAIN]/your_report_URI
4、阻止网站被嵌套,X-Frame-Options
网站被嵌套,可能出现clickhijacking等攻击
服务器配置响应头:X-Frame-Options: deny/sameorigin/allow-from: DOMAIN
因为X-Frame-Options只检测与top窗口的关系,若有多层嵌套victim{hacker{victim,则可以绕过,
另外主页面可以监听事件onBeforeUnload可以取消iframe的跳转;iframe的sandbox属性可以禁用iframe中的js
所以需要配合csp规则的Content-Security-Policy: frame-ancestors 'self';
5、配置多种安全策略,Content-Security-Policy
可以定义许多安全策略,script-src,frame-src ,referrer等
服务器配置响应头:Content-Security-Policy: script-src 'self'
6、响应内容探测,X-Content-Type-Options
有些服务器响应内容未设置content-type,浏览器会自动检测内容type(MIME自识别),会出现编码相关的安全问题(IE和chrome会忽略content-type 自行推测网页格式、编码等,会出现IE的utf-7 xss绕过等bug)
服务器配置响应头:X-Content-Type-Options: nosniff
其他参考 http://blog.sina.com.cn/s/blog_6cd4a7350102xgab.html