| 规则组成 | 写法 | 示例 |
|---|---|---|
| 触发场景 | 哪类文件/功能/接口触发 | 用户、角色、菜单、部门、岗位 |
| 必须动作 | AI 必须检查或执行什么 | 检查 Controller 权限注解 |
| 禁止动作 | AI 不能偷懒或绕过什么 | 不能只做前端按钮隐藏 |
| 验收方式 | 怎么确认规则被遵守 | 文件路径、注解、无权限测试 |
---
# 安全规则示例
前端按钮权限只能作为交互控制,不能作为安全边界
涉及用户、角色、菜单、部门、岗位等敏感接口时,必须检查后端 Controller 是否存在权限控制
涉及新增、修改、删除、导出等操作时,必须检查是否记录操作日志
---
# 权限与日志 rules 片段
```md
## 权限与审计规则
- 涉及用户、角色、菜单、部门、岗位的新增、修改、删除、导出接口时,
必须检查后端 Controller 是否有权限控制,不能只依赖前端按钮权限。
- 涉及新增、修改、删除、导入、导出等敏感操作时,
必须检查是否记录操作日志,并说明日志注解或 AOP 依据。
- 如果当前上下文无法确认权限或日志实现,必须标注“不确定”,
并请求补充 Controller、Service、权限配置或日志切面相关文件。
```
---
# 敏感配置规则
- 禁止在源码中硬编码数据库密码、Redis 密码、JWT 密钥、第三方密钥
- 不得提交真实 application-dev.yml、.env、本地配置文件
- 示例配置必须使用占位符
---
# 安全规则验证
| 个人任务 | 产出 |
|---|---|
| 选择一个敏感动作 | 删除用户、导出用户、重置密码任选一个 |
| 用上下文包提问 | 要求 TRAE 先收集证据,不改代码 |
| 抽取安全规则 | 写出 3 条可执行 rules |
| 设计验证步骤 | 正常账号、无权限账号、日志检查各 1 条 |