SECURITY RULES

SECURITY RULES

文件四:04_SECURITY_RULES.md

操作指南MD下载原文件
# 文件四:04_SECURITY_RULES.md # 安全、权限与隐私永久规则 版本:1.0 状态:长期有效 优先级:最高 作用:所有功能默认以“不能因为方便而牺牲安全”为原则。 # 1. 安全默认原则 任何数据和功能默认: - 没有权限就不能访问。 - 而不是: - 只要没有隐藏就能访问。 # 2. 前端不可信 前端: - 按钮隐藏。 - 字段隐藏。 - 路由隐藏。 - 都不是安全措施。 - 真正权限必须由后端验证。 # 3. 身份认证与权限授权必须分开 Authentication: - 你是谁。 - Authorization: - 你能干什么。 - 两个都必须验证。 # 4. 最小权限原则 普通用户: - 只能访问自己的必要资源。 - 管理员: - 只获得管理需要权限。 - 数据库账户: - 只获得应用需要权限。 - 服务: - 只获得必要权限。 # 5. 敏感信息禁止进入前端 绝对禁止: - 数据库密码。 - 服务器私钥。 - 第三方Secret。 - 管理员密码。 - JWT Secret。 - API Secret。 # 6. Secret必须使用环境变量或安全密钥管理 不得硬编码在: - JS。 - HTML。 - CSS。 - Git。 - README。 - Demo。 # 7. .env不得提交真实密钥 允许: - .env.example - 但只提供: - 变量名。 - 示例值。 # 8. 密码规则 密码: - 不得明文保存。 - 不得明文日志。 - 不得API返回。 - 必须使用成熟安全Hash方案。 # 9. Token规则 必须考虑: - 有效期。 - 签名。 - 撤销。 - 刷新。 - 存储。 - 泄露。 # 10. Cookie认证 应根据实际场景设置: - HttpOnly。 - Secure。 - SameSite。 - 合理Domain。 - 合理Path。 # 11. 登录安全 登录必须考虑: - 暴力破解。 - 频率限制。 - 异常尝试。 - 错误信息泄露。 # 12. 管理员安全等级高于普通用户 管理员系统必须单独检查: - 登录。 - 认证。 - 授权。 - 限流。 - 操作日志。 - 敏感操作。 # 13. 权限测试 至少测试: - 游客。 - 普通用户。 - 管理员。 - 超级管理员。 # 14. 防止IDOR 用户不能仅通过修改: - userId。 - fileId。 - orderId。 - projectId。 - 就访问别人的资源。 # 15. 数据归属必须在后端验证 不能相信前端提交: ` "userId": "123" ` 就默认是该用户。 # 16. 用户输入默认不可信 所有用户输入必须: - 验证。 - 限制。 - 转义。 - 必要时过滤。 # 17. XSS防护 任何用户内容输出到HTML时: - 必须安全编码。 - 不得直接将不可信HTML插入页面。 # 18. SQL注入防护 禁止用户输入拼接SQL。 - 必须使用: - 参数化查询。 - 成熟ORM。 # 19. 命令注入防护 如果程序调用: - Shell。 - FFmpeg。 - Python。 - 系统程序。 - 用户参数不能未经严格处理直接进入命令。 # 20. 路径穿越防护 文件系统不得允许: - ../ - ..
  • 绕过允许目录。

21. SSRF防护

服务器替用户请求URL时:

  • 必须限制:
  • 协议。
  • 域名。
  • IP范围。
  • 重定向。 不得访问:
  • localhost。
  • 内网服务。
  • 云平台内部敏感地址。
  • 除非业务明确需要并安全控制。

22. CSRF

涉及敏感状态修改的系统:

  • 必须根据认证方式评估CSRF风险并采取保护。

23. CORS

不得为了“先跑起来”直接全部:

  • Allow-Origin: *
  • 尤其带认证信息时。

24. 上传安全

必须限制:

  • 大小。
  • 类型。
  • 真实MIME。
  • 数量。
  • 文件名。
  • 存储位置。
  • 访问权限。

25. 上传目录与程序执行目录分离

用户上传文件不能因为上传成功就可以被服务器执行。

26. 文件下载权限

私人文件:

  • 必须验证资源归属和权限。
  • 不能只靠URL难猜。

27. 请求大小限制

限制:

  • JSON。
  • Form。
  • 文件。
  • URL。
  • 分页。
  • 请求频率。

28. Rate Limit

至少评估:

  • 登录。
  • 注册。
  • 验证码。
  • AI调用。
  • 上传。
  • 搜索。
  • 昂贵接口。
  • 管理员登录。

29. 防资源耗尽

防止用户通过:

  • 超长输入。
  • 超大文件。
  • 超大分页。
  • 无限调用。
  • 复杂查询。
  • 耗尽服务器资源。

30. 错误信息安全

用户可看到:

  • 合理错误提示。
  • 用户不可看到:
  • Stack Trace。
  • 数据库SQL。
  • 服务器绝对路径。
  • Secret。
  • 环境变量。
  • 内部网络信息。

31. 日志安全

禁止日志记录:

  • 密码。
  • 完整Token。
  • API Secret。
  • 私钥。
  • 不必要的隐私数据。

32. 管理员操作必须审计

重要操作记录:

  • 谁。
  • 什么时候。
  • 做了什么。
  • 对什么对象。
  • 结果。

33. 数据隐私

只收集业务需要的数据。

  • 不要因为:
  • “以后可能有用”
  • 就收集大量信息。

34. 第三方数据传输

用户数据发给第三方之前必须确认:

  • 是否必要。
  • 发送什么。
  • 第三方是谁。
  • 是否包含敏感内容。

35. AI安全

如包含AI功能:

  • 系统Prompt不得放客户端。
  • API Key不得放客户端。
  • 工具调用必须权限控制。

36. Prompt Injection不应拥有系统权限

模型收到:

  • “忽略之前规则”
  • 不应该因此:
  • 访问管理员接口。
  • 数据库。
  • 文件系统。
  • Shell。

37. AI工具遵循最小权限

AI需要读文件:

  • 不要给整个服务器写权限。
  • AI需要查数据库:
  • 不要默认给DROP权限。

38. AI调用成本必须有限制

控制:

  • 单次输入。
  • 输出Token。
  • 频率。
  • 每日额度。
  • 并发。

39. 安全优先于兼容错误行为

如果旧功能本身存在严重安全风险:

  • 必须报告。
  • 不能为了保持旧Bug继续留下漏洞。

40. 安全问题等级

发现:

  • 密钥泄露。
  • 管理员越权。
  • 数据库暴露。
  • 任意命令执行。
  • 严重SQL注入。
  • 用户数据越权。
  • 默认按高风险或致命处理。

41. 安全修复完成必须复测

修完漏洞不能只检查代码。

  • 必须尝试原攻击路径。
  • 确认失败。

42. 任何“暂时关闭安全措施”都必须禁止进入生产

开发方便用的:

  • 关闭认证。
  • 全开放CORS。
  • 默认管理员。
  • 万能Token。
  • Debug接口。
  • 上线前必须清除。

六大规则共同执行协议

以下内容同时适用于全部六份文件。

A. AI每次任务开始前

先阅读:

  • 与当前任务有关的规则文件。
  • 如果任务涉及多个领域:
  • 全部读取。 例如:
  • 修改登录:
  • 必须读取:
  • 01_REQUIREMENTS_RULES.md
  • 03_ENGINEERING_RULES.md
  • 04_SECURITY_RULES.md
  • 05_TESTING_RULES.md 修改视觉:
  • 读取:
  • 01_REQUIREMENTS_RULES.md
  • 02_DESIGN_SYSTEM_RULES.md
  • 05_TESTING_RULES.md 准备上线:
  • 六份全部读取。

B. 规则冲突优先级

如发生冲突:

  • 安全与数据完整性 明确用户需求 产品规则 架构规则 设计规则 优化建议

C. AI不能自行修改规则

除非用户明确要求:

  • “修改规则文件”。
  • 否则:
  • 这些文件只读。

D. 现有项目与规则冲突怎么办

不得为了符合规则立即大规模重写。

  • 先输出:
  • 规则:
  • 当前实现:
  • 差异:
  • 严重程度:
  • 建议迁移方式: 再决定是否修复。

E. 每次修改之前

先回答自己:

  • 我正在解决什么问题?
  • 哪些文件必须修改?
  • 哪些文件不应该碰?
  • 是否涉及数据?
  • 是否涉及权限?
  • 是否影响API?
  • 是否影响UI?
  • 如何验证?

F. 每次修改之后

必须检查:

  • 代码是否能运行。
  • 是否引入新错误。
  • 相关功能是否正常。
  • 是否影响其他模块。
  • 是否需要更新文档。

G. 禁止假完成

以下情况不得说:

  • “全部完成”。
  • 仍有未测试。
  • 仍有报错。
  • Build失败。
  • 接口未验证。
  • 缺少环境。
  • 第三方服务没测试。 应明确:
  • 已完成:
  • 未完成:
  • 无法验证:
  • 风险:

H. 修改范围原则

永远优先:

  • 小范围。
  • 可验证。
  • 可回滚。
  • 低耦合。 而不是:
  • 一次改几十个无关文件。

I. 项目长期目标

本项目必须尽量保持:

  • 可理解。
  • 可修改。
  • 可维护。
  • 可测试。
  • 可部署。
  • 可恢复。
  • 可扩展。
  • 安全。 最终目标不是:
  • “AI这次把它跑起来了。”
  • 而是:
  • “即使换一个AI、换一台电脑、换一个开发者,这个项目依然能够继续维护。”

AI任务统一结束报告模板

每一次AI开发任务结束,都使用:

本次任务

修改文件

新增文件

删除文件

修改功能

配置变化

依赖变化

数据库变化

安全影响

实际测试

Build状态

未验证内容

已知问题

后续建议

最后只能使用:

  • ✅ 完成并验证
  • ⚠️ 完成但仍有未验证项目
  • ❌ 未完成
  • 三种结论之一。