AI 编程安全注意事项:密钥保护、权限模式怎么选、提示注入防范清单

用 Cursor、Claude Code、Codex、Copilot 写代码有哪些安全风险?按各家官方安全文档整理:密钥别进上下文和仓库、各工具权限模式对照与推荐档位、提示注入是什么与五条防范、不可信仓库怎么开、MCP 与规则文件的风险,附一页自查清单。

NNathaniel bigo··原创首发·AI 辅助撰写
13 分钟读完
资料核对于 2026-10-11 · 依据官方文档与公开资料整理 免费账号 账号
本文根据 Claude Code、Cursor、GitHub Copilot CLI、Cline、Kiro 的官方安全文档和 MCP 官方《Local Server Security》整理,资料核对于 2026-10-11。本文讲的是保护你自己的代码、密钥和电脑的做法。

适用于谁

  • 开始让 AI 智能体直接改文件、跑命令,心里没底的人;
  • 搜「ai 编程 安全」「提示注入」「mcp 安全风险」的人;
  • 团队里要给 AI 编程工具定使用规范的人。

结论先说

  1. 智能体有手有脚:能读文件、改文件、跑命令、联网。几家官方都承认 AI 会因为提示注入、幻觉等原因做出意外行为,所以才有权限和沙箱这些护栏——Cursor 明确说它们是「尽力而为的护栏,不是硬性安全边界」。
  2. 密钥三不:不写进代码、不贴进对话、不放进会被提交或被智能体读到的文件。
  3. 权限选中间档:既不要每一步都手动点(会点麻木),也不要全部放开。各工具都有「自动审查 + 沙箱」这类中间模式。
  4. 凡是智能体读到的东西都可能带指令:网页、issue、PR 评论、依赖包的 README、MCP 工具描述、别人仓库里的规则文件。这就是提示注入。
  5. 最后一道防线是你:Claude Code 官方的原话是,用户有责任在批准前审查代码和命令的安全性。
  6. 一切操作都在 Git 管理下进行,随时能回退。

一、密钥

常见的泄露路径

路径怎么发生怎么防
写死在代码里让 AI「帮我接一下某某 API」,它把 Key 直接写进源码指令里写明「密钥从环境变量读取」;提交前搜一遍
贴进对话调试时把带 Key 的配置、报错、curl 命令整段粘贴粘贴前把 Key 换成占位符
被智能体读到它为了排查问题读了 .env 或配置文件忽略文件 + 权限规则(见下)
写进 MCP 配置并提交mcp.json 里直接填了 token用变量引用环境变量;带密钥的配置不进仓库
前端代码vibe coding 生成的应用把 Key 放在浏览器可见的代码里密钥只在服务器端读取
截图和录屏发帖求助时截到了 Key发之前打码

忽略文件能挡多少

  • Cursor 默认忽略 .env、.git/ 和锁文件,可用 .cursorignore 追加。但官方说明:终端命令和 MCP 工具运行在这套文件访问控制之外,仍可能读到被忽略的文件。
  • Cline 的 .clineignore 官方已标注即将弃用,并明说它不是安全或访问控制边界,推荐改用 PreToolUse hook 做真正的拦截。
  • 结论:忽略文件只能减少「不小心读到」,要真正拦住,得靠权限规则里的 deny 和沙箱。例如 Devin Desktop 可以写 Read(**/*.pem) 的拒绝规则;Claude Code 可以在 permissions.deny 里禁止读取某些路径。

万一泄露了:立刻到发放方作废并重新生成这把 Key。从对话或提交历史里删掉并不够——它可能已经进入日志或被推送。

给 Key 最小权限。Kiro 官方举的例子:GitHub 用细粒度个人访问令牌而不是经典令牌,只授权需要的仓库,并定期轮换。

二、权限模式怎么选

工具最严格推荐的中间档全部放开(慎用)
Claude CodeManual:先只读,改文件和跑命令都问你Auto:由单独的分类器模型代你审查并拦截它判断为不安全的操作;或开启沙箱bypass 权限
CursorAllowlist:只有白名单里的动作自动运行Auto-review:白名单直接跑,其余 shell 命令尽量进沙箱,进不了的交给分类器Run Everything
GitHub Copilot CLI默认:只读操作自动放行,会改东西的逐次询问用 --allow-tool 精确放行、--deny-tool 精确禁止--allow-all
Cline关闭全部 Auto Approve只开「读项目文件、编辑项目文件、执行安全命令」Execute all commands / YOLO 模式
Codex见单篇教程见单篇教程见单篇教程

对应教程:《Claude Code 权限模式详解》、《Cursor 隐私模式与 Agent 权限》、《Codex 权限与沙箱设置》、《GitHub Copilot CLI 安装与使用》。

选档位的三条原则

  1. 日常用中间档。纯手动模式下每一步都弹窗,人很快就会不看内容直接点同意,反而不安全。Claude Code 官方把允许常用安全命令加白名单称为缓解「提示疲劳」。
  2. deny 规则写死红线。不管哪个档位,都把绝不允许的操作写成拒绝规则:git push、删除类命令、读密钥目录、访问生产环境的命令。Copilot CLI 官方明确 deny 永远优先于 allow。
  3. 全部放开只用在可丢弃的环境:容器、虚拟机、没有任何凭据的云端沙箱。在装着 SSH 密钥和云凭据的工作电脑上不要开。

分类器不是保险。Cursor 官方直说 Auto-review 的分类器会出错——可能放行你本想拦的,也可能拦下你本想放的。Cline 的「安全命令」是模型自己根据命令内容标记的,没有固定白名单,官方说给出的例子不是保证。

三、提示注入

是什么。Claude Code 官方的定义:攻击者通过插入恶意文本,试图覆盖或操纵 AI 助手的指令。对编程智能体来说,危险在于它分不清「数据」和「命令」:它读到的任何文字都可能被当成要执行的指示。

可能藏在哪

  • 让它「读一下这个网页 / 这篇文档」——页面里藏着给 AI 的指令;
  • issue、PR 评论、提交信息——尤其是开源仓库里陌生人写的;
  • 依赖包的 README、代码注释;
  • MCP 服务器的工具名称和描述(MCP 官方称为「被投毒的工具目录」);
  • 别人仓库里的 AGENTS.md、规则文件、.mcp.json、hooks 配置。Kiro 文档提醒:只选你信任的仓库,因为智能体会遵循仓库代码里的指示。

它想让智能体做什么:读取密钥并通过网络请求发出去;执行下载并运行脚本的命令;偷偷修改 CI 配置或依赖。

五条防范(前四条来自 Claude Code 官方的「处理不可信内容的最佳实践」)

  1. 批准前看清建议的命令,尤其是带 curl、wget、管道到 shell、base64 的;
  2. 不要把不可信的内容直接管道喂给智能体;
  3. 核对对关键文件的改动:CI 配置、依赖清单、部署脚本、权限配置;
  4. 在虚拟机里跑脚本和工具调用,特别是要和外部网络服务交互时;
  5. 限制出网。智能体拿到了数据也发不出去,注入就成功不了一半。Cursor 默认设置下智能体不能发起任意网络请求;Claude Code 默认不自动批准 curl、wget 这类联网命令;沙箱模式都可以配置域名白名单。

官方也都承认:这些保护能显著降低风险,但没有任何系统对所有攻击免疫。

四、打开不认识的仓库

别人的仓库不只是代码,还可能带着会自动生效的配置。

  • 用工作区信任机制。Claude Code 在你没信任过的文件夹里启动时会弹信任确认;项目 .mcp.json 里的服务器另有单独的批准提示。Devin Desktop 的 Restricted Mode 会禁用所有智能体和 hooks。Cursor 支持 workspace trust 但默认关闭,可在 settings.json 里设 "security.workspace.trust.enabled": true;Cursor 官方甚至建议:不可信的仓库干脆用普通文本编辑器看。
  • 先看这些文件:AGENTS.md、CLAUDE.md、.cursor/、.claude/、.kiro/、.trae/、.mcp.json、任何 hooks 配置。
  • Trae 的项目级 MCP、Kiro 的多仓库任务,官方都附了「确保来源可信」的警告。
  • 非交互模式要格外小心。Claude Code 官方注明 -p 会话不显示信任确认。

五、MCP、插件与规则文件

  • 本地 MCP 服务器是以你的身份运行的普通进程,能读环境变量和文件、能联网。装之前按《MCP 服务器怎么选》里的七步检查过一遍。
  • 少装、用完就关、版本锁定。
  • 新装的服务器先别开自动批准,每次调用看一眼参数。
  • 从网上抄来的规则、skills、hooks 先读内容再用——它们本质上是直接写给智能体的指令。本站 Skill 库 里的条目都标了来源仓库,使用前同样建议自己读一遍。

六、代码与数据去哪了

  • 用 AI 功能时,提示词和相关代码会发给模型提供方做推理,这是所有云端工具的共同点。差别在是否用于训练、保留多久。
  • 各家都有开关:Cursor 的 Privacy Mode;Claude 消费者账号可在隐私设置里更改训练偏好;ChatGPT 有数据控制设置。见《Cursor 隐私模式与 Agent 权限》、《Claude 隐私设置》、《ChatGPT 隐私设置》。
  • 自带 API Key、使用第三方模型时,数据政策跟着模型提供方走。
  • 公司代码先看公司规定;客户数据、个人信息不要进对话。

一页自查清单

每个项目做一次

  • [ ] 密钥全部走环境变量,.env*、证书目录在 .gitignore 和工具的忽略文件里
  • [ ] 权限规则里有 deny:推送、删除、读密钥路径、生产环境命令
  • [ ] 权限模式是中间档,没有开「全部放开」
  • [ ] 读取范围限制在工作区内
  • [ ] MCP 配置里没有写死的密钥,每个服务器都知道来源
  • [ ] 仓库里有 CI 的测试、类型检查、lint,AI 的改动要过这些检查

每次任务

  • [ ] 开工前 Git 工作区是干净的
  • [ ] 批准命令前读过命令内容
  • [ ] 合并前看过完整 diff,重点看 CI、依赖、部署、权限相关文件
  • [ ] 让它读外部内容(网页、issue)之后,留意它有没有提出不相干的操作

出事之后

  • [ ] 泄露的 Key 立刻作废重发
  • [ ] 回退到已知良好的提交
  • [ ] 查一遍 MCP 配置和 hooks 有没有被改
  • [ ] 可疑行为向工具官方反馈(Claude Code 用 /feedback,Cursor 有安全报告邮箱)

参考资料

  • Security(Claude Code 官方):https://code.claude.com/docs/en/security
  • Agent Security(Cursor 官方):https://cursor.com/docs/agent/security
  • Run Modes(Cursor 官方):https://cursor.com/docs/agent/security/run-modes
  • Allowing and denying tool use(GitHub Copilot CLI 官方):https://docs.github.com/en/copilot/how-tos/copilot-cli/use-copilot-cli/allowing-tools
  • Auto Approve & YOLO Mode(Cline 官方):https://docs.cline.bot/features/auto-approve
  • Local Server Security(MCP 官方):https://modelcontextprotocol.io/docs/2026-07-28/tutorials/security/local-server-security
  • MCP Best practices(Kiro 官方):https://kiro.dev/docs/mcp/security
需要开通或续费?Claude Pro 充值 →

Nathaniel 的更多内容

  1. 01

    promptfoo 使用教程:对比提示词和模型、写断言自动评测(安装与配置)

    promptfoo 是什么、怎么使用?按官方 README 和入门文档讲清它的用途、三种安装方式、用示例项目起步、promptfooconfig.yaml 里提示词、模型和测试用例三部分怎么写、常用断言类型的含义、eval 与 view 两条命令,以及把它放进日常改提示词流程的方法。

    ChatGPT其他 AI 工具0
  2. 02

    Kimi API怎么用:API Key获取、Python调用、K3价格与429报错处理

    Kimi API Key 在哪里获取、怎么用 Python 调用 K3、价格怎么算、429 和 401 报错怎么办?本文按 Kimi API 开放平台官方文档讲清注册认证、创建 Key、base_url 与模型名、计费规则和常见错误排查。

    Kimi0
  3. 03

    Cursor Agent 模式怎么用:Agent、Plan、Ask 三种模式,检查点回滚与消息排队

    Cursor Agent 模式是什么、和 Plan / Ask 模式怎么选?按官方文档讲清 Agent 能调用哪些工具、Shift+Tab 切换模式、Plan 模式先出方案再动手、用检查点撤销改动、任务进行中排队或插话,以及 /goal 长目标。

    Cursor0
  4. 04

    Gemini 聊天记录怎么导出:导出到文档 / 表格、生成 PDF 与用 Takeout 批量导出完整对话

    Gemini 没有「一键导出全部对话」的按钮,但有三条官方路径:单条回答导出到 Google 文档、Gmail、表格;让 Gemini 直接生成 PDF、Word、Markdown 文件;用 Google Takeout 批量下载全部活动记录。本文给出每种方法的步骤和限制。

    Gemini0
  5. 05

    ChatGPT 生成图片中文乱码、文字错误怎么办:7 个按顺序试的办法

    让 ChatGPT 做海报、封面、信息图,中文总是缺笔画、错字、乱码?本文按 OpenAI 官方图像提示指南,给出从写法、字数、局部修改、质量档位到后期排版的 7 个办法,以及什么时候干脆别让 AI 写字。

    ChatGPT0
  6. 06

    OpenCode Skills 使用指南:技能目录、命名规则、权限配置与不加载排查

    OpenCode 的 Skills 放在哪个目录、怎么控制哪些技能能用?按 OpenCode 官方文档讲清六个扫描位置、name 的正则规则、skill 工具的工作方式、在 opencode.json 里用 allow / deny / ask 配置权限、按智能体覆盖,以及技能不出现时的五项检查。

    其他 AI 工具0

同产品的其他教程

  1. 01

    Cursor、Claude Code、Codex、GitHub Copilot 有什么区别:按形态、账号、计费和规则文件对比

    Cursor 和 Claude Code 的区别是什么、和 Codex、GitHub Copilot 怎么选?只用各家官方文档的事实对比:产品形态、用什么账号、怎么计费、能选哪些模型、规则文件与 MCP、权限模式、代码审查;不做「谁更强」的排名,给出按场景选择的思路。

    ClaudeCursor0
  2. 02

    如何让大模型稳定输出 JSON:结构化输出、JSON 模式与提示词写法(OpenAI / Claude)

    怎么让大模型稳定输出 JSON?本文按 OpenAI 和 Anthropic 官方文档讲清只靠提示词、JSON 模式、结构化输出三种做法的可靠程度,两家的写法与 Schema 限制,以及拒答和截断两种例外。

    ChatGPTClaude0
  3. 03

    MinerU 是什么、怎么用:把 PDF 等文档解析成 Markdown(4.0 的安装、四档解析与命令)

    MinerU 是什么、怎么安装使用?按官方中文 README 讲清 4.0 版本的定位、支持的输入与输出格式、flash / basic / standard / advanced 四档解析各适合什么、pip 安装命令、mineru-kit 与 mineru 两个命令的分工和常用写法,以及从旧版升级要注意什么。

    其他 AI 工具0
  4. 04

    npx skills add 怎么用:从 GitHub 安装 Skill、skills.sh 是什么与常用命令

    网上的 Skill 安装命令大多是 npx skills add 开头,它是什么、装到哪去了?按官方 README 讲清 skills 命令行工具支持的来源写法、项目与全局两种范围、-a 指定工具、list / find / update / remove 等命令、软链接与复制的区别,以及怎么关掉遥测。

    Claude其他 AI 工具0
  5. 05

    即梦首尾帧怎么用:两张图生成过渡视频(在哪里、提示词、不能用怎么办)

    即梦首尾帧在哪里、怎么用?本文讲清首尾帧入口、哪些模型支持、两张图的比例要求、过渡提示词怎么写,以及「首尾帧不见了 / 不能用了」「画面跳变」的原因和解决办法。

    其他 AI 工具0
  6. 06

    提示词里的角色设定有用吗:「你是一位专家」该怎么写才有效(官方文档怎么说)

    提示词开头写「你是一位资深专家」到底有没有用?本文按 Anthropic、OpenAI、Google 官方文档讲清角色设定管什么、不管什么,一句话角色和详细人设各自适合什么场景,角色应该放在哪里,以及比「你是专家」更有效的四个写法。

    ChatGPTClaude0

0 条评论

登录 后参与评论

还没有评论,来抢沙发~