疯狂的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参数(页面有移除的前提条件)

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

相关文章
|
存储 监控 安全
IT知识百科:什么是域控服务器?
【2月更文挑战第21天】
3412 2
IT知识百科:什么是域控服务器?
|
小程序 Shell Linux
workman(二)thinkphp5.0安装websocket插件workerman
首先说明一下我使用的PHP框架是thinkphp5.0。 当然,workerman这个插件不是只有thinkphp5.0可以使用。 具体的安装方法,thinkphp5.0的官方手册中是给出了明确的说明 请移步《thinkphp5.0官方手册》
659 0
|
6月前
|
运维 安全 应用服务中间件
强化网站安全的利器(Nginx中如何正确配置HSTS安全头)
本文介绍如何在Nginx中配置HSTS安全头,提升网站安全性。通过启用HSTS,强制浏览器使用HTTPS通信,有效防御中间人攻击。内容涵盖配置步骤、参数详解、注意事项及验证方法,适合新手快速上手,助力实现Web安全最佳实践。
|
编解码 Linux C语言
探索C++与Live555实现RTSP服务器的艺术(一)
探索C++与Live555实现RTSP服务器的艺术
1619 1
|
8月前
|
人工智能 API 开发工具
京东:对接白条API提供分期付款,降低消费门槛
本文详解京东白条API集成,涵盖技术原理、分步对接流程及Python代码实现,帮助开发者快速接入分期付款功能。通过API调用实现信用评估与分期计算,降低消费门槛,提升电商转化率。内容基于官方文档,确保准确可靠。
523 8
|
5月前
|
人工智能 API Android开发
送给GLM Coding Plan用户和开源社区的“AI手机”
智谱推出“AI手机”新体验,通过Claude Code输入提示词,即可自动部署开源Agent模型AutoGLM。三步操作,轻松拥有专属AI设备,享受技术平权。倡导开源生态与AI协同,推动人人可用的AGI未来。
737 2
|
Java 编译器
封装,继承,多态【Java面向对象知识回顾①】
本文回顾了Java面向对象编程的三大特性:封装、继承和多态。封装通过将数据和方法结合在类中并隐藏实现细节来保护对象状态,继承允许新类扩展现有类的功能,而多态则允许对象在不同情况下表现出不同的行为,这些特性共同提高了代码的复用性、扩展性和灵活性。
封装,继承,多态【Java面向对象知识回顾①】
|
安全 应用服务中间件 测试技术
如何在 Nginx 中启用 HSTS?
如何在 Nginx 中启用 HSTS?
914 1
如何在 Nginx 中启用 HSTS?
|
存储 安全 物联网
物联网(IoT)安全:挑战与解决方案
【8月更文挑战第5天】物联网(IoT)深刻改变着我们的生活,但随之而来的安全挑战不容忽视。面对设备身份验证复杂、数据隐私泄露、软件漏洞及资源受限等问题,本文提出加强身份验证、加密保护、定期更新、安全开发生命周期、多层次防御、安全培训及标准化合作等解决方案,旨在构建一个更加安全可靠的物联网环境。
1425 2
|
安全 应用服务中间件 网络安全
检查一个网站是否启用了HTTPS
检查一个网站是否启用了HTTPS
3354 6