圣巧依官网 · 安全加固补丁部署说明
====================================

本补丁依据安全扫描报告，修复以下全部问题（部署后无需额外配置）：

【高危 / High】
1. 缺失 HSTS（复查补充：增加 preload）
   -> 新增 Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
      （preload 已随本补丁追加，可直接提交至浏览器 HSTS 预加载列表）
2. CSP 过于宽松（script-src 含 'unsafe-inline'）
   -> 改为基于 nonce 的严格 CSP：script-src 'self' 'nonce-xxx'（移除 'unsafe-inline'/'unsafe-eval'）；
      前端入口通过输出缓冲自动为所有内联 <script>/<style> 注入本次请求 nonce；
      原 27 处内联 onclick/onsubmit 确认框已重构为 data-confirm 属性 + admin.js 委托监听。
3. 管理后台登录无验证码 / 限速不足
   -> 登录增加算术验证码（无第三方依赖）；并新增 IP 级失败限速（fail2ban 式，文件缓存），
      与原有会话级限速叠加，抗机器人暴力破解。

【中危 / Medium】
4. 缺失 Permissions-Policy
   -> 新增 Permissions-Policy 收敛 geolocation/microphone/camera/payment/usb 等敏感 API。
5. 联系表单缺垃圾防护
   -> 新增蜜罐字段（隐藏，机器人填写即静默丢弃）+ 算术验证码 + 服务端输入校验（姓名/电话格式/长度）
      + 后端 IP 级提交限速（每 15 分钟最多 5 次，复用 storage/rate_contact.json）。
6. 客户端输入校验缺失
   -> 登录与联系表单增加 maxlength/pattern/inputmode/autocomplete 等原生校验属性。
7. 密码框缺 autocomplete
   -> 登录密码框 autocomplete="current-password"，账号框 autocomplete="username"，联系表单电话 autocomplete="tel"。

【低危 / Low】
8. 缺失 robots.txt -> public/robots.txt（屏蔽 /admin/、/CRM/、/PSI/）。
9. 缺失规范链接 -> 前端布局注入 <link rel="canonical">。
10. 暴露 Vite 开发产物 -> 经核查项目未使用 Vite（public/ 下无 .vite / node_modules / @vite 资源），属误报，无需处理。
11. 缺失 X-XSS-Protection -> 新增 X-XSS-Protection: 1; mode=block（旧浏览器纵深防御）。

【额外修复（报告外但同属高危）】
- 根入口 index.php 含 phpinfo() 信息泄露，已移除并转发至正式入口 public/index.php。

二、部署步骤
-----------
1. 将 security-patch.zip 内文件按相同目录结构覆盖上传到站点根目录。
2. 确保站点根目录可写（IP 限速缓存会写入 storage/login_ip.json；若不可写，限速降级为仅会话级，不影响其他功能）。
3. 刷新后台登录页与联系页，确认出现验证码、删除/操作确认弹窗正常、页面无 JS 报错。
4. 建议部署后通过浏览器开发者工具「网络」面板确认响应头包含
   Strict-Transport-Security、Content-Security-Policy（含 nonce-）、Permissions-Policy、X-XSS-Protection。

三、回滚
-------
保留部署前文件备份即可回滚。CSP 收紧若导致个别内联脚本异常，优先检查是否仍有遗漏的内联事件处理器或 <script> 未带 nonce（正常页面均会自动注入）。
