1、HTTP strict-transport-security (HSTS)
max-age=16070400;includeSubDomains 严格安全传输 用来抵御SSL剥离攻击 包括子域名
该方式的一些不足
(1)用户首次访问某网站是不受HSTS保护的。这是因为首次访问时,浏览器还未收到HSTS,所以仍有可能通过明文HTTP来访问。解决这个不足目前有两种方案,一是浏览器预置HSTS域名列表,Google Chrome、Firefox、Internet Explorer和Spartan实现了这一方案。二是将HSTS信息加入到域名系统记录中。但这需要保证DNS的安全性,也就是需要部署域名系统安全扩展。截至2014年这一方案没有大规模部署。
(2)由于HSTS会在一定时间后失效(有效期由max-age指定),所以浏览器是否强制HSTS策略取决于当前系统时间。部分操作系统经常通过网络时间协议更新系统时间,如Ubuntu每次连接网络时,OS X Lion每隔9分钟会自动连接时间服务器。攻击者可以通过伪造NTP信息,设置错误时间来绕过HSTS。解决方法是认证NTP信息,或者禁止NTP大幅度增减时间。比如Windows 8每7天更新一次时间,并且要求每次NTP设置的时间与当前时间不得超过15小时。
2、Content-Security-Policy 内容安全策略 default-src ‘self’
该响应头主要用来定义页面可以加载哪些资源,减少XSS攻击
default-src
限制全局,默认所有都会使用这种规则script-src
限制JavaScript的源地址。style-src
限制层叠样式表文件源。img-src
限制图片和图标的源地址
限制规则
(1)default-src ‘self’;只允许同源下的资源
(2)script-src ‘self’; 只允许同源下的js
(3)script-src ‘self’ www.xxx.com; 允许同源以及指定地址下的js加载
(4)default-src ‘none’; script-src ‘self’; connect-src ‘self’; img-src ‘self’; style-src ‘self’;
3、X-Content-Type-Options nosniff
nosniff
下面两种情况的请求将被阻止:
- 请求类型是"
style
" 但是 MIME 类型不是 "text/css
", - 请求类型是"
script
" 但是 MIME 类型不是javascript mime类型
4、X-XSS-Protection
- 0(禁用XSS过滤器/审核员)
- 1(删除不安全的部分;如果没有X-XSS-Protection标题,ie8中是默认设置)
- 1; mode = block(如果找到XSS,则不要渲染文档)
5、X-Frame-Options
X-Frame-Options SAMEORIGIN; 允许同域嵌套
X-Frame-Options ALLOW-FROM http://XXX.com/;允许单个域名iframe嵌套
X-Frame-Options "ALLOW-FROM http://XXX1. com/,https://XXX2. com/";允许多个域名iframe嵌套,注意这里是用逗号分隔
6、跨域设置
怎么才算跨域:
- 请求协议
http,https
的不同 - 域
domain
的不同 - 端口
port
的不同
Access-Control-Allow-Origin(标识允许哪个域的请求) *
Access-Control-Allow-Credentials:true 意味这将cookie开放给了所有的网站
Access-Control-Allow-Methods 允许的方法访问
Access-Control-Max-Age 返回结果可以用于缓存的最长时间,单位是秒
Access-Control-Allow-Headers 可支持的请求首部名字。请求头会列出所有支持的首部列表,用逗号隔开。