×

HTTPS 为什么仍然可能被“降级攻击”

DNS劫持网 DNS劫持网 发表于2026-04-14 00:07:13 浏览80 评论0

抢沙发发表评论

HTTPS 本来是用来防止窃听和篡改的,但在某些条件下,攻击者可以通过**“降级攻击”(HTTPS Downgrade Attack),把原本安全的 HTTPS 连接强行变回不安全的 HTTP**,从而重新获得“可监听、可篡改”的能力。

下面把这个问题彻底讲清楚👇


一、什么是“降级攻击”?(一句话)

👉 降级攻击 = 强迫浏览器不用 HTTPS,而改用 HTTP


二、为什么“降级”是可能的?

核心原因:

👉 浏览器一开始并不知道你“必须用 HTTPS”

例如你输入:

example.com

浏览器默认会先尝试:

http://example.com   ← ❗ 关键弱点

然后网站再跳转到:

https://example.com

👉 问题就在这个“中间跳转”阶段 ⚠️


三、典型攻击:SSL Strip(经典降级攻击)

这是最经典的一种方式。


🔹 正常流程(无攻击)

用户 → http://example.com
        ↓
服务器返回 301 跳转
        ↓
https://example.com
        ↓
安全通信

🔥 被降级攻击(SSL Strip)

用户 → http://example.com
        ↓
⚠ 攻击者拦截
        ↓
❌ 删除“跳转到 HTTPS”
        ↓
用户继续使用 HTTP
        ↓
攻击者完全可见 + 可篡改

👉 用户看到的是:

  • 页面能正常打开 ✅

  • 但其实是 HTTP ❌(无锁)


四、攻击者具体做了什么?

攻击者(通常在中间人位置,比如公共 WiFi):

1️⃣ 拦截 HTTP 请求

因为 HTTP 是明文的


2️⃣ 修改服务器响应

把:

Location: https://example.com

改成:

(删除 / 改为 http)

3️⃣ 替换页面中的 HTTPS 链接

把:

<a href="https://bank.com">

改成:

<a href="http://bank.com">

👉 用户永远被困在 HTTP 世界


五、为什么 HTTPS 本身“挡不住”?

关键点:

👉 攻击发生在 HTTPS 建立之前

也就是:

DNS → HTTP → (还没进入 HTTPS)

👉 HTTPS 还没来得及发挥作用,就已经被绕开了


六、降级攻击的几种形式

1️⃣ SSL Strip(最经典)

  • 强制 HTTP

  • 用户无感知


2️⃣ 协议降级(TLS 版本降级)

攻击者让双方使用弱加密:

TLS 1.3 → TLS 1.0(甚至 SSL)

👉 利用旧协议漏洞


3️⃣ HTTPS → HTTP 跳转劫持

  • 删除 301/302 跳转

  • 或改写为 HTTP


4️⃣ 混合内容攻击(Mixed Content)

HTTPS 页面中加载 HTTP 内容:

https 页面
   ↓
加载 http 图片 / JS

👉 仍然可被劫持


七、如何防御降级攻击(核心重点)

✅ 1. HSTS(最关键机制)

HTTP Strict Transport Security

浏览器记住:

这个网站必须用 HTTPS!

之后:

  • 自动把 HTTP 改成 HTTPS

  • 不再给攻击者机会


✅ 2. HSTS Preload(终极防护)

浏览器内置列表(如 Chrome):

👉 一开始就强制 HTTPS(连第一次都保护)


✅ 3. 禁用弱 TLS

服务器配置:

只允许 TLS 1.2 / 1.3

✅ 4. 全站 HTTPS + 强制跳转

  • 不允许 HTTP 页面存在

  • 所有资源必须 HTTPS


✅ 5. 用户侧注意

  • 看地址栏 🔒

  • 不忽略证书警告

  • 避免公共 WiFi(或用 VPN)


八、一个完整攻击 vs 防御对比

❌ 无防护

用户 → HTTP → 被劫持 → 一直HTTP

✅ 有 HSTS

用户 →(浏览器强制)HTTPS
        ↓
攻击者无法插手

九、一句话总结

👉 降级攻击的本质:在 HTTPS 还没建立之前,把你“拽回 HTTP”

👉 解决核心:让浏览器“从一开始就只用 HTTPS”(HSTS)