host-canonical-email.php
【🔴 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