规则约束与安全防护
本文为「AI 辅助编程实战指南」第5篇,完整系列持续更新中。
前言
AI 编程工具越强大,越需要给它”立规矩”。本篇系统讲解如何通过保护机制、安全规则清单和开发 SOP,让 AI 在可控范围内高效工作,而不是擅自修改核心代码或引入安全漏洞。
你有没有遇到过这种情况:让 AI “帮我优化一下数据库查询”,结果它顺手把你的认证中间件也改了?或者让它写个新接口,结果生成的代码里密码用明文存储?
这不是 AI 的”恶意”,而是它没有边界感。AI 编程工具的底层逻辑是”尽可能满足你的请求”,但”满足请求”和”安全地满足请求”之间,隔着一条你必须在部署工具之前就划好的红线。
本篇学完你将掌握:
- AI 编程场景下的 5 类典型安全风险
- 各主流工具的代码保护机制配置方法(Cursor / Claude Code / Qoder / Copilot)
- 一份可直接复用的 AI 代码安全审查清单
- 一套将安全规则固化为开发 SOP 的完整流程
- 规则文件从编写到落地的全链路实战
一、AI 编程的 5 类典型安全风险
在讲防护之前,先搞清楚风险在哪。AI 辅助编程的安全隐患不是”AI 会写错代码”这么简单,而是系统性的、可预测的 5 类问题。
1.1 风险全景图
| 风险类型 | 典型表现 | 危害等级 | 触发场景 |
|---|---|---|---|
| 越权修改 | AI 擅自修改认证、鉴权、加密等核心模块 | 极高 | 大范围重构、Agent 模式 |
| 安全漏洞引入 | 生成 SQL 注入、XSS、硬编码密钥等不安全代码 | 高 | 新功能开发 |
| 依赖投毒 | 推荐未经验证的第三方库,可能包含恶意代码 | 高 | AI 自由推荐依赖 |
| 敏感信息泄露 | 代码中嵌入 API Key、数据库密码、内部地址 | 高 | 生成配置文件、示例代码 |
| 逻辑一致性破坏 | 修改 A 模块时破坏与 B 模块的调用契约 | 中 | 多文件编辑、大范围重构 |
💡 提示:越权修改和依赖投毒是最容易被忽视的两类风险。很多开发者只关注”AI 写的代码有没有 Bug”,却忽略了”AI 有没有动不该动的代码”和”AI 推荐的库是否可信”。
1.2 一个真实的”翻车”场景
假设你对 AI 说:”帮我把这个项目的数据库从 MySQL 迁移到 PostgreSQL。”
AI 可能会做的事:
- 修改数据库连接配置——这是你期望的
- 修改 ORM 查询语句以适配 PostgreSQL——这也是你期望的
- 顺手把
.env文件里的数据库密码改成了postgres123——你没让它干这个 - 在
requirements.txt里加了一个你没听说过的 PostgreSQL 驱动——可能包含恶意代码 - 把
auth模块里的某个字段类型也改了,因为”看起来也需要适配”——认证逻辑被破坏
这 5 个动作里,有 3 个是你不想要甚至危险的。而解决这个问题的方法,不是”更仔细地审查 AI 的输出”(人总会漏看),而是提前用规则文件告诉 AI:哪些事你能做,哪些事你不能做。
二、保护机制:给 AI 划”不可触碰”的红线
保护机制的核心思路是:与其信任 AI 的判断力,不如用规则文件限制它的行动边界。 各主流 AI 编程工具都支持通过配置文件实现这一目标。
2.1 文件级保护:标记”只读”文件
最简单的保护方式是告诉 AI “这些文件你不能动”。
Cursor:在 .cursorrules 中配置
1 | # 项目保护规则 |
Claude Code:在 CLAUDE.md 中配置
1 | # 文件保护规则 |
Qoder:在 AGENTS.md 中配置
1 | # 安全规则 |
💡 建议:保护规则的粒度越细越好。不要只写”不要修改核心代码”,而是明确列出每个受保护的文件和目录路径。AI 不会理解”核心代码”这个抽象概念,但它能精确匹配文件路径。
2.2 操作级保护:限制 AI 的执行权限
除了文件级保护,还可以限制 AI 能执行哪些操作。
操作权限分级:
| 权限级别 | 说明 | 典型场景 |
|---|---|---|
| 只读 | AI 只能读取和引用代码,不能修改任何文件 | 代码分析、架构理解 |
| 受限编辑 | AI 可以编辑代码,但不能执行终端命令 | 日常编码辅助 |
| 完全自主 | AI 可以编辑文件 + 执行命令 + 安装依赖 | Agent 模式、全流程开发 |
各工具的权限控制方式:
| 工具 | 权限控制方式 |
|---|---|
| Cursor | Composer 模式下选择 “Normal”(受限)或 “Agent”(完全自主) |
| Claude Code | 在 CLAUDE.md 中声明 禁止执行终端命令 或 禁止安装依赖 |
| Qoder | Agent 模式下可在设置中限制文件写入范围 |
| Copilot | Agent 模式下通过 .github/copilot-instructions.md 限制操作范围 |
| OpenAI Codex | 三种模式:建议模式(人工确认)、自动编辑、完全自主 |
⚠️ 注意:在高权限模式下(Agent / 完全自主),务必配合文件级保护使用。权限越大,风险越高——保护规则就是你的最后一道防线。
2.3 代码块级保护:标记”不可修改”的代码段
有些情况下,整个文件不需要保护,但文件中的某些关键代码段不能动。
1 | # === PROTECTED: 以下认证逻辑不可修改 === |
在规则文件中配合声明:
1 | ## 代码块保护 |
三、安全规则清单:AI 生成代码的必检项
保护机制解决了”AI 不能动什么”的问题,安全规则清单解决的是”AI 生成的代码必须满足什么安全标准”。
3.1 通用安全规则(适用于所有项目)
以下规则建议写入项目的规则文件,作为 AI 生成代码的强制约束:
1 | ## 安全规则(所有生成代码必须遵守) |
3.2 分场景安全规则
不同项目类型的安全重点不同,下面是按场景细分的补充规则:
Web 后端项目
1 | ### Web 后端补充规则 |
数据处理项目
1 | ### 数据处理补充规则 |
云原生项目
1 | ### 云原生补充规则 |
3.3 安全规则的落地方式
安全规则写在规则文件里只是第一步,关键是让它在开发流程中真正生效:
| 落地方式 | 说明 | 效果 |
|---|---|---|
| 规则文件声明 | 写入 .cursorrules / CLAUDE.md / AGENTS.md |
AI 生成代码时自动遵守 |
| Git Hook 检查 | 用 pre-commit hook 检查敏感信息和禁止修改的文件 | 提交前自动拦截 |
| CI/CD 扫描 | 用 Semgrep / Bandit / ESLint Security 扫描 AI 生成的代码 | 合并前自动检测 |
| 代码审查 Skill | 安装 code-reviewer Skill 专门做安全审查 |
AI 自动审查安全问题 |
💡 建议:推荐的安全防线组合是:规则文件(第一道)+ Git Hook(第二道)+ CI/CD 扫描(第三道)。三道防线缺一不可——规则文件防止 AI 生成不安全代码,Git Hook 防止开发者不小心提交敏感信息,CI/CD 扫描作为最后兜底。
四、开发 SOP:将安全规则嵌入开发全流程
规则文件和安全清单解决了”约束什么”的问题,开发 SOP 解决的是”什么时候检查”的问题。将安全规则固化为标准操作流程,让每次 AI 辅助开发都遵循同一个安全标准。
4.1 AI 辅助开发的标准 SOP
1 | ┌─────────────┐ |
4.2 每个环节的安全检查点
环节 1:需求确认
1 | ## 需求确认检查清单 |
环节 2:方案设计
1 | ## 方案设计检查清单 |
环节 3:受控编码
编码阶段是安全规则文件发挥作用的主要环节。确保规则文件已正确配置:
1 | ## 编码阶段检查清单 |
环节 4:安全审查
这是最关键的环节。使用下面的一站式安全审查 Prompt,让 AI 对自己生成的代码做安全检查:
1 | 【角色设定】请扮演拥有 10 年经验的安全审计专家,熟悉 OWASP Top 10。 |
环节 5:测试验证
1 | ## 测试阶段检查清单 |
4.3 SOP 固化模板
将以上所有检查清单整合为一个团队可复用的 SOP 文件:
1 | # AI 辅助开发安全 SOP |
💡 建议:把这个 SOP 文件放在项目根目录的
AI_DEVELOPMENT_SOP.md中,并在规则文件中引用它。这样 AI 在每次执行任务时都会自动加载这个 SOP 作为约束。
五、踩坑记录:AI 偷偷改了认证中间件,测试全绿却没发现
现象:
使用 AI 的 Agent 模式重构用户管理模块。任务完成后所有单元测试通过,CI 流水线也显示绿色。但上线后发现部分用户无法登录——排查后发现 AI 在重构过程中修改了 auth/middleware.py 中的一个条件判断,导致特定角色的用户被绕过认证。
原因:
Agent 模式拥有完全自主权,AI 在重构用户管理模块时”顺便”优化了认证中间件里一个它认为”冗余”的条件判断。虽然单元测试覆盖了用户管理的核心逻辑,但没有针对认证中间件的完整测试。受保护文件清单也没有覆盖 auth/middleware.py。
解决方案:
- 立即将
auth/整个目录加入文件保护清单 - 为认证中间件补充完整的集成测试,覆盖所有角色的认证流程
- 在 CI 中增加
auth/目录变更的强制 Code Review 规则 - 将 Agent 模式降为受限编辑模式,日常开发不再使用完全自主权限
避坑建议:
- 安全相关的目录(
auth/、security/、middleware/)必须整个目录加入保护,而不是只保护单个文件 - Agent 模式虽然高效,但在涉及安全模块时,宁可降权使用受限编辑模式
- 测试不能只看”通过率”,还要看”覆盖率”——认证模块的测试覆盖率必须达到 100%
总结与回顾
| 核心要点 | 关键结论 |
|---|---|
| 5 类安全风险 | 越权修改、安全漏洞引入、依赖投毒、敏感信息泄露、逻辑一致性破坏 |
| 文件级保护 | 用规则文件明确标记只读路径,粒度越细越好 |
| 操作级保护 | 按场景选择权限级别,高权限必须配合保护规则 |
| 安全规则清单 | 认证授权、数据保护、API 安全、依赖安全四大维度 |
| 开发 SOP | 需求确认 → 方案设计 → 受控编码 → 安全审查 → 测试验证 → 提交合并 |
| 三道防线 | 规则文件(预防)+ Git Hook(拦截)+ CI/CD 扫描(兜底) |
延伸阅读
本文为「AI 辅助编程实战指南」第5篇,完整系列持续更新中。