作用
一个网站接受一个HTTP的请求,然后跳转到HTTPS,用户可能在开始跳转前,通过没有加密的方式和服务器对话,比如,用户输入http://foo.com或者直接foo.com。
这样存在中间人攻击潜在威胁,跳转过程可能被恶意网站利用来直接接触用户信息,而不是原来的加密信息。
网站通过HTTP Strict Transport Security通知浏览器,这个网站禁止使用HTTP方式加载,浏览器应该自动把所有尝试使用HTTP的请求自动替换为HTTPS请求。
现实案例
你连接到一个免费WiFi接入点,然后开始浏览网站,访问你的网上银行,查看你的支出,并且支付一些订单。很不幸,你接入的WiFi实际上是黑客的笔记本热点,他们拦截了你最初的HTTP请求,然后跳转到一个你银行网站一模一样的钓鱼网站。 现在,你的隐私数据暴露给黑客了。
Strict Transport Security解决了这个问题;只要你通过HTTPS请求访问银行网站,并且银行网站配置好Strict Transport Security,你的浏览器知道自动使用HTTPS请求,这可以阻止黑客的中间人攻击的把戏。
启用 Strict Transport Security
开启HSTS只需要当通过HTTPS方式访问你的网站时,返回 Strict-Transport-Security
HTTP 头信息:
Strict-Transport-Security: max-age=expireTime [; includeSubdomains]
expireTime
includeSubdomains
可选
如果这个可选的参数定义了,这条规则对于网站的所有子域同样生效。
例如:
进入 IIS -- 网站 — 你的域名 — HTTP 响应标头 — 添加
名称: Strict-Transport-Security
值:max-age=15768000; includeSubDomains; preload
浏览器如何处理
Strict-Transport-Security
头,浏览器记录下这些信息,然后后面尝试访问这个网站的请求都会自动把HTTP替换为HTTPS。
浏览器兼容性