在使用 AI 时避免泄露秘密
你遇到了一个错误。你复制了堆栈跟踪(stack trace)。你让 AI 来修复它。你忘记了你的 DATABASE_URL 和密码就在那段文本中。AI 在四秒钟内就给出了回答。现在,你的秘密已经进入了请求日志或训练集。你无法将其删除。
将秘密粘贴到 AI 中就像将其粘贴到公共网站一样。你无法撤回。
我每天都使用 AI 来交付代码。我并不回避它,而是带着威胁模型(threat model)来使用它。
大多数人认为提示词(prompt)是私密对话。其实不然。它是一个出站请求(outbound request)。
- 免费层级通常会使用你的数据来训练模型。
- 付费层级通常承诺不会使用你的数据进行训练。
- 即使是付费层级,也会为了检测滥用和人工审核而存储日志。
数据泄露有三种方式:
- 你粘贴的内容:代码片段、配置或跟踪信息。
- 工具自动附加的内容:打开的文件、代码库上下文或终端输出。
- 模型返回的内容:在 PR 描述或日志中回显的秘密。
AI 提供商是一个受信任的第三方。你无法审计他们的内部流水线。请将提示词框视为一个不可信的网络调用。
停止发送以下内容:
- 活跃的 API 密钥或令牌(tokens)。
.env文件的内容。- 私钥或证书。
- 真实的客户姓名、电子邮件或支付数据。
- 你不会开源的专有逻辑。
请改用占位符。使用 [API_KEY] 或 [DB_PASSWORD]。AI 在使用掩码(masks)时同样表现出色。
养成这三个习惯:
- 使用 AI 忽略文件。将
.env和包含秘密的文件夹排除在工具的上下文之外。 - 发送前进行扫描。在粘贴之前,对你的文本运行秘密检测器。
- 保持秘密加密。如果秘密仅在运行时存在于内存中,你就无法将其粘贴出来。
选项摘要:
- 免费/消费者版:用于公开文档或临时代码片段。
- 付费专业版/团队版:用于大多数工程工作。它具有合同层面的保护。
- 本地/自托管版:用于必须保留在机器上的受监管数据。
“不进行训练”的保证是一份合同。它不是技术盾牌。它降低了风险,但并未消除风险。
在 AI 处理你的代码之前,请遵循以下步骤:
- 为你的 AI 工具添加忽略文件。
- 扫描你粘贴的所有内容。
- 使用占位符掩盖所有凭据。
- 对专有工作使用付费层级。
- 使用 KMS(密钥管理服务)使秘密不以明文形式存在。
- 在 AI 输出进入日志或提交(commits)之前进行审查。
四秒钟的回答依然很快。只是它不再以牺牲你的安全性为代价。
Optional learning community: https://t.me/GyaanSetuAi
