host-canonical-email.php

20260916-201504 轮 · 看它的历史
【🔴 SEC-0001 本体:攻击者伪造 Host,邮件链接必须仍指向规范域名】
  ✅ 正文里没有 evil.example.com
  ✅ 链接前缀 = https://ffjnc.ownnote.cn
  ✅ 链接不是相对路径
  ✅ code 仍在链接里(功能没被改坏)

【合法 Host:开发白名单 → 原样,不被强行归一到生产域名】
  ✅ 链接落回开发主机 localhost:20098(开发照常可点)

【命中 domain1 → https】
  ✅ 强制 https(不看请求 scheme)

【🔴 SEC-0003 ②:重置链接的路径段编码】
  ✅ 守卫:正常邮箱(含 +)的链接逐字不变,@ 与 + 都没被编码
  ✅ 畸形邮箱 [a@b.com#frag] 的路径段被编码,且能逐字解回原值
  ✅ 畸形邮箱 [a b@x.com] 的路径段被编码,且能逐字解回原值
  ✅ 畸形邮箱 [a@b.com?q=1] 的路径段被编码,且能逐字解回原值
  ✅ 畸形邮箱 [a%2eb@x.com] 的路径段被编码,且能逐字解回原值
  ✅ 🔴 含 # 的邮箱不再让链接在 # 处截断(/code/4212 仍在路径里)

【domain1 为空 = 运维事故 → 返回空串,由调用方拒发】
  ✅ emailgen 返回空串
  ✅ 🔴 绝不吐出一封带相对链接的坏邮件
  ✅ 清缓存后恢复正常

PASS=15 FAIL=0