Files
nekonest-cloud/docs/security-headers.md
T

2.2 KiB
Raw Blame History

浏览器安全响应头基线

NekoNest Cloud 在 Cloudflare Worker 的统一响应出口为页面、API 和图片响应设置浏览器安全头。它是免费公测的基础防护,不代表严格 CSP、可验证发布或 sealed 端到端实证已经完成。

当前策略

  • Content-Security-Policy 默认只允许同源资源,禁止插件对象、被其他页面嵌入、站内 frame、跨源表单提交和媒体加载;图片只额外允许 data:blob:Worker 只额外允许 blob:
  • X-Frame-Options: DENY 作为旧浏览器的点击劫持兜底。
  • Referrer-Policy: no-referrer 避免页面地址随跨站请求泄露。
  • X-Content-Type-Options: nosniff 禁止内容类型猜测。
  • Permissions-Policy 关闭当前产品不需要的摄像头、麦克风、定位、支付、USB 等浏览器能力。
  • HTTPS 响应设置一年 HSTS;HTTP 本地开发响应不会设置 HSTS。当前不使用 includeSubDomains 或 preload,避免在正式域名与租户子域策略确定前扩大承诺范围。
  • /api/dashboard/admin 及其子路径统一使用 Cache-Control: private, no-store,即使某个业务处理器遗漏设置,也不让账户或控制面数据被浏览器或共享缓存保存;公开页面原有的缓存策略不被覆盖。

当前页面没有远程第三方脚本、样式或字体。以后增加外部来源时,必须同时修改策略、测试和本文,不能临时放宽为通配来源。

尚未完成的严格 CSP

Vinext / React 当前渲染链仍需要兼容内联脚本和样式,因此 script-srcstyle-src 暂时包含 'unsafe-inline'。策略不允许 'unsafe-eval',也不允许任意远程脚本来源,但这仍不是 nonce 或 hash 约束的严格 CSP。

扩大公测前仍需完成:

  • 为框架输出接入 nonce 或 hash,并移除脚本侧 'unsafe-inline'
  • 先以 report-only 方式观察真实违规,再收紧正式策略;
  • 选择公开登录方案后,重测跳转、退出和账户恢复路径;
  • 完成依赖锁定、构建哈希/provenance 与服务工作者回滚证据。

浏览器安全头不能解决托管方可更新 PWA 的根本信任问题,也不能替代 sealed 命令和附件的端到端测试。