Web 启动清单
目标:绝不发布带有漏洞、法律缺陷或购买流程中断的网站、Shopify 商店、应用或 SaaS。启动始终是用户的决策:你负责检查准备,但不执行发布操作。
决策规则(阻塞性)
如果存在以下任一问题,则不要发布:
- 私密密钥或秘密在代码前端、Git 仓库或构建中暴露;
- 用户可以读取或修改其他用户的数据;
- HTTPS 缺失或配置错误;
- 对私有数据缺少 RLS(或等效机制)或配置不当;
- 需要同意的追踪器在用户同意前启动;
- 存在隐藏或误导性费用;
- 购买或支付流程存在缺陷。
方法
- 确定项目类型(展示型网站、商店、带账户的应用、带支付的 SaaS),并忽略不适用项,同时说明原因。
- 按顺序依次检查以下 5 个模块。对于每一项检查,标记状态为:OK / 需修复 / 不适用 / 不可验证,并提供证据或执行的测试。
- 在可访问代码或数据库(Supabase、Vercel、Shopify)时,自行验证;否则,向用户提供确切测试步骤。
- 最后生成报告(格式如下)。
模块 1 — 技术安全
- 全域名 HTTPS、HTTP 重定向、无混合内容;HSTS 仅在验证后启用。测试:http:// 应重定向。
- 安全头:适当的 CSP、nosniff、Referrer-Policy、iframe 保护。测试:SecurityHeaders.com。
- 密钥仅存在于服务器端(私钥、支付令牌、秘密 API 密钥)。测试:构建后的 JS 和 Git 仓库中不含密钥。
- 服务器端验证(类型、大小、字段);仅前端验证可被绕过。测试:修改后的请求被拒绝。
- 每个资源的权限:身份认证和对每个对象的访问权限。测试:账户 B 不能读取或修改账户 A 的任何内容。
- SQL 注入 / XSS:参数化查询、框架转义,绝不使用原始用户 HTML。测试:HTML 文本显示而不被执行。
- CSRF 和 Cookie:Secure、HttpOnly、SameSite;若使用 Cookie 认证,则需 CSRF 防护。
- 依赖项最新,无严重告警,移除不必要包。
- CORS 限制为必要的来源(不是访问屏障)。
- 上传控制:大小、实际格式、扩展名、重命名、隔离存储。
- 滥用防护:对登录、邮件和表单启用速率限制;必要时使用 Turnstile 或 CAPTCHA。
- 管理员账户:MFA、受限访问、内部面板不可见。
- 生产模式:无调试、无公开 .env、无冗长日志。
- 基于域名的邮件:SPF、DKIM、DMARC。
模块 2 — 数据(Supabase 或等效系统)
- 仅当 RLS 正确时,才在浏览器端使用 publishable/anon 密钥;service_role 密钥仅限服务器端。
- 对所有暴露的表启用 RLS,移除 anon/authenticated 的不必要权限。
- 基于操作(SELECT、INSERT、UPDATE、DELETE)的策略关联到 auth.uid();使用访客、用户 A、用户 B 三个配置文件进行正向和反向测试。
- Storage Buckets 规则合理(公共头像不应拥有与发票相同的权限)。
- 认证:授权重定向 URL、会话过期、重置和注销均经过测试。
- Security Advisor:无严重未处理告警。
- 备份:验证实际备份选项,测试恢复过程。
- 日志和告警(5xx 错误、配额),绝不记录密码或令牌。
- 环境分离(本地、预发布、生产)并准备回滚机制。
模块 3 — 法律与信任(法国 / 欧盟,根据业务核实)
- 法律声明(身份、联系方式)、隐私政策(数据、目的、法律依据、保留期限、权利、联系方式)。
- 使用条款;若涉及销售,则需销售条款;退款与撤回权(自 2026 年 6 月 19 日起,相关合同需提供在线撤回功能);消费者调解员。
- Cookie:政策、拒绝与接受同等易用的横幅、无追踪器在同意前启动、选择可在每个页面修改。
- 表单:收集时提供信息、复选框默认未勾选、数据最小化、清除期限。
- 第三方工具清单(分析、像素、聊天、CAPTCHA、AI)以及欧盟外传输情况。
- 无暗黑模式、无虚假紧急信息、无隐藏费用(含税、运费、订阅费用在支付前显示)。
- 无虚假评价、无无法验证的承诺或数据。
- 图片、图标、视频、字体的许可证。
- 未成年人:在法国,若数据处理基于同意,则 15 岁以下需双方同意。
- 促销邮件中的退订链接功能正常;提供账户删除流程。
- 数据泄露处理流程(若存在风险,需在 72 小时内通知 CNIL)。
模块 4 — UX、SEO 和转化
- 清晰的主 CTA,在手机上拇指可操作。
- 每页唯一的标题和有用的 meta 描述;测试 og:image;favicon。
- sitemap.xml、robots.txt、canonical、私有页面使用 noindex;Search Console。
- 自定义 404 页面返回正确 404 状态码;检查失效链接。
- 常见真实异议的 FAQ;可兑现的承诺交付时间;操作后的感谢页面。
- 可访问性:对比度、键盘导航、可见焦点、替代文本、200% 缩放。
- 性能:LCP ≤ 2.5 秒、INP ≤ 200 毫秒、CLS ≤ 0.1(PageSpeed 移动端和桌面端);图片压缩。
模块 5 — 发布前真实测试
- 表单:空、无效、过长、服务器错误、双击、成功、接收、移动端。
- 测试模式下的购买及退款;含税、总价、发票正确。
- 实际收到邮件(注册、重置、发票、支持)。
- Webhook:签名验证、无重复事件。
- 隐私浏览:无追踪器在同意前设置。
- 域名和 DNS 受 MFA 保护;可回退到稳定版本。
报告格式
- 单行结论:准备发布 / 发布前需修复 / 已阻塞(列出阻塞点)。
- 阻塞点,然后按严重程度排序的需修复点,每个点附上确切修正和位置。
- 不可验证项及用户应执行的测试。
- 提醒:用户自行发布。对于法律事项,此检查不能替代专业人士。