这样的方式存在两点不足:
- 第一个请求是明文,若包含敏感信息,容易泄露,很难抵御SSL剥离攻击。
- 第一个请求无效,浪费了网络请求
含义
网站选择使用HSTS策略,来让浏览器强制使用HTTPS会话劫持风险。
工作原理
这意味着:
- 在接下来的一年中(max-age),所有通过http访问及子域名时,比如,访问
浏览器应当自动将 http 转写成 https,使用307 Internal Redirect ,直接向
发送请求。
- 在接下来的一年中,如果 服务器发送的TLS证书无效,用户不能忽略浏览器警告继续访问网站
好处是显而易见的:
- 避免SSL剥离攻击。只要浏览器曾经与服务器创建过一次安全连接,之后浏览器会强制使用HTTPS,即使链接被换成了HTTP。
- 避免假冒证书攻击。如果中间人使用自己的自签名证书来进行攻击,浏览器会给出警告,但是许多用户会忽略警告。HSTS解决了这一问题,一旦服务器发送了HSTS字段,用户将不再允许忽略警告。
看到这里,或许你也发现了,HSTS还有一点没有解决:用户首次访问某网站怎么办?还有办法:浏览器预置HSTS域名列表(HSTS preload list)
HSTS preload list
含义
HSTS preload list是Chrome浏览器中的HSTS预载入列表,在该列表中的网站,使用Chrome浏览器访问时,会自动转换成HTTPS。Firefox、Safari、Edge浏览器也在采用这个列表。
使用
-
Strict-Transport-Security
max-age至少需要18周,10886400秒 - 必须指定includeSubdomains参数
- 必须支持preload参数
例如:Strict-Transport-Security “max-age=31536000; includeSubDomains; preload