在使用 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)之前进行审查。

四秒钟的回答依然很快。只是它不再以牺牲你的安全性为代价。

Source: https://dev.to/faizahmedfarooqui/using-ai-without-leaking-your-secrets-a-threat-model-for-ai-assisted-development-2l57

Optional learning community: https://t.me/GyaanSetuAi