疯狂的HSTS

简介: 疯狂的HSTS

现象:访问某个域名及任意一个子域名都会强制跳转HTTPS,即使将该域名解析至任意一个站点都会被强制跳转


原因:不恰当设置了HSTS 导致

什么是 HSTS ?


HSTS是 HTTP 严格传输安全(HTTP Strict Transport Security) 的缩写。 这是一种网站用来声明他们只能使用安全连接(HTTPS)访问的方法。 如果一个网站声明了 HSTS 策略,浏览器必须拒绝所有的 HTTP 连接并阻止用户接受不安全的 SSL 证书。 目前大多数主流浏览器都支持 HSTS。

为什么开启后反而影响到了访问?


开启HSTS本身是为了更安全,但是开启前务必确保所有资源必须都必须支持通过HTTPS访问(使用正确有效且被信任的证书)

如何判断一个站点是否开启了HSTS ?


通常在初次请求站点后,站点会在响应的header中增加

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

这意味着站点开启了HSTS,includeSubDomains 和 preload都是可选参数;

includeSubDomains 意味着该域名的所有子域名都将启用HSTS,所以子域名也必须支持HTTPS,不然就是会遇到无法访问(证书不匹配过期均会导致无法访问且浏览器不允许忽略)

preload  预加载列表。简单是将域名加入到浏览器内置的一个列表中,该列表由chrome维护,随浏览器版本更新,这意味着加入会需要相当长时间,而一旦加入只能 等下次浏览器版本更新才能移除

所以要将自己的域名加入列表必须确保能够在较长时间内保持对所有资源的完全 HTTPS 访问

如何判断是否已加入预加载列表


https://hstspreload.org/  登录此网站查询域名是否已在预加载列表内

若还未加入,在调试网站时因为HSTS原因导致出现非预期跳转,需要清理缓存,此时清理浏览器缓存无效,需要清理HSTS缓存 ,浏览器地址里访问下面地址

chrome://net-internals/#hsts  

Edge浏览器也是一样的方法,Delete domain security policies下的文本框中输入要删除的域,然后点击Delete

如果域名已进入了预加载列表,这个删除是不生效的。

如何从预加载列表中移除


可以访问https://hstspreload.org/removal/

输入域名进行提交,注意在提交前必须移除了preload参数(页面有移除的前提条件)

这里提交后并不能立即移除,要等下个浏览器版本更新

相关文章
|
缓存 安全 网络安全
ingress 因为HSTS引发307跳转问题
ingress 因为HSTS引发307跳转问题
|
10月前
|
应用服务中间件 网络安全 Apache
解决跨域和https不能访问的问题
【4月更文挑战第10天】解决跨域和https不能访问的问题
515 2
解决跨域和https不能访问的问题
|
Web App开发 安全 数据安全/隐私保护
|
缓存 应用服务中间件 Linux
跨域访问
跨域是指从一个域名的网页去请求另一个域名的资源。比如从 www.a.com 页面去请求 www.b.com 的资源。
跨域访问
|
应用服务中间件 nginx
(CORS) Nginx配置跨域
网站配置文件server 添加以下即可
183 0
|
Web App开发 存储 缓存
你真的知道Cookie?SameSite,Secure,Httponly
这两天(已经是一个多月前了) SF 上面很多 cookie 的问题,然后还有个 cookie 相关的付费问答。 所以咱们今天来这么一节,废话多说点,先说说大体问题方向。 跨域如何携带 cookie chrome 80 版本加强隐私。SameSite=Lax 为默认值,禁止了一部分场景携带 cookie。
662 0
你真的知道Cookie?SameSite,Secure,Httponly
|
Web App开发 安全 应用服务中间件
|
Web App开发 缓存 安全
HSTS 详解,让 HTTPS 更安全
HSTS 详解,让 HTTPS 更安全随着互联网的快速发展,人们在生活中越来越离不开互联网。无论是社交、购物还是搜索,互联网都能给人带来很多的便捷。与此同时,由于用户对网络安全的不了解和一些网站、协议的安全漏洞,让很多用户的个人信息数据“裸露”在互联网中。
1667 0
|
Web App开发 应用服务中间件 nginx
nginx配置正向代理支持HTTPS
配置正向代理支持HTTPShttp://www.bieryun.com/1675.html nginx当正向代理的时候,通过代理访问https的网站会失败,而失败的原因是客户端同nginx代理服务器之间建立连接失败,并非nginx不能将https的请求转发出去。
16812 0

热门文章

最新文章