Open zhaobinglong opened 3 years ago
但是当网站传输协议从 HTTP 到 HTTPS 之后,数据传输真的安全了吗?
由于用户习惯,通常准备访问某个网站时,在浏览器中只会输入一个域名,而不会在域名前面加上 http:// 或者 https://,而是由浏览器自动填充,当前所有浏览器默认填充的都是http://。一般情况网站管理员会采用了 301/302 跳转的方式由 HTTP 跳转到 HTTPS,但是这个过程总使用到 HTTP 因此容易发生劫持,受到第三方的攻击。
HSTS是国际互联网工程组织 IETF 正在推行一种新的 Web 安全协议,网站采用 HSTS 后,用户访问时无需手动在地址栏中输入 HTTPS,浏览器会自动采用 HTTPS 访问网站地址,从而保证用户始终访问到网站的加密链接,保护数据传输安全。
HSTS 主要是通过服务器发送响应头的方式来控制浏览器操作:
Strict-Transport-Security: max-age=expireTime [; includeSubDomains] [; preload] // 此响应头只有在 https 访问返回时才生效,其中[ ]中的参数表示可选;
开启 HSTS 后网站可以有效防范中间人的攻击,同时也省去网站 301/302 跳转花费的时间,大大提升安全系数和用户体验。
第一次访问网站的客户端,HSTS 并不工作
如果一个用户从来没有以HTTPS方式访问过我们的网站呢,那显然就没有机会得到HSTS 响应头,从而还是有可能以HTTP的方式进行首次访问——虽然我们已经做了很多自动和强制的引导,但是总还稍有缺憾?所以,追求完美人们,又提出了一个HSTS预载入列表preload list(友情提示,请自备梯子)。
谷歌在浏览器安全方面总是走在前面,因此它维护了一个预载入列表给Chrome 使用,这个列表会硬编码到 Chrome 浏览器中。后来,Firefox、Safari、 IE 11 和 Edge 一想,得了,咱也别自己弄一个了,都采用这个列表吧。所以,各大浏览器都支持同一个列表了。如果要想把自己的域名加进这个列表,需要满足以下条件:
chrome://net-internals/#hsts // 向chrome提交hsts域名 https://hstspreload.appspot.com/
server { listen 443 ssl; server_name domain.com; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; location / { } }
https://www.cnblogs.com/upyun/p/7447977.html https://www.wosign.com/News/HTTPS-HSTS.htm
背景
但是当网站传输协议从 HTTP 到 HTTPS 之后,数据传输真的安全了吗?
由于用户习惯,通常准备访问某个网站时,在浏览器中只会输入一个域名,而不会在域名前面加上 http:// 或者 https://,而是由浏览器自动填充,当前所有浏览器默认填充的都是http://。一般情况网站管理员会采用了 301/302 跳转的方式由 HTTP 跳转到 HTTPS,但是这个过程总使用到 HTTP 因此容易发生劫持,受到第三方的攻击。
HSTS(HTTP 严格安全传输)
HSTS是国际互联网工程组织 IETF 正在推行一种新的 Web 安全协议,网站采用 HSTS 后,用户访问时无需手动在地址栏中输入 HTTPS,浏览器会自动采用 HTTPS 访问网站地址,从而保证用户始终访问到网站的加密链接,保护数据传输安全。
原理
HSTS 主要是通过服务器发送响应头的方式来控制浏览器操作:
优点
开启 HSTS 后网站可以有效防范中间人的攻击,同时也省去网站 301/302 跳转花费的时间,大大提升安全系数和用户体验。
缺点
第一次访问网站的客户端,HSTS 并不工作
HSTS预载入列表
如果一个用户从来没有以HTTPS方式访问过我们的网站呢,那显然就没有机会得到HSTS 响应头,从而还是有可能以HTTP的方式进行首次访问——虽然我们已经做了很多自动和强制的引导,但是总还稍有缺憾?所以,追求完美人们,又提出了一个HSTS预载入列表preload list(友情提示,请自备梯子)。
谷歌在浏览器安全方面总是走在前面,因此它维护了一个预载入列表给Chrome 使用,这个列表会硬编码到 Chrome 浏览器中。后来,Firefox、Safari、 IE 11 和 Edge 一想,得了,咱也别自己弄一个了,都采用这个列表吧。所以,各大浏览器都支持同一个列表了。如果要想把自己的域名加进这个列表,需要满足以下条件:
查看网站是否开启hsts
Nginx开启hsts
参考
https://www.cnblogs.com/upyun/p/7447977.html https://www.wosign.com/News/HTTPS-HSTS.htm