Skip to content

5.3.2 绝对禁区:永远不要告诉 AI 的东西

经过本节学习,你将掌握:

  • 哪些信息绝对不能发送给 AI
  • 为什么这些信息会带来风险
  • 如果已经发送了该怎么补救
  • 如何安全地让 AI 帮你处理敏感场景

绝对禁令清单

永远不要在与 AI 对话时发送以下内容:

类型示例为什么危险
API 密钥sk-abc123...AKIA...可被用于消费你的账户,或访问你的云服务
数据库连接字符串postgres://user:pass@host/db攻击者可直接访问你的数据库
密码任何真实密码身份被盗用,账户被入侵
私钥/证书-----BEGIN RSA PRIVATE KEY-----可用于伪装成你的身份,入侵你的系统
个人身份信息身份证号、银行卡号、社保号隐私泄露,可能被用于诈骗
公司/学校机密内部文档、客户数据、商业秘密数据泄露,可能违反保密协议
Token/SessionJWT token、登录凭证可用于冒充你的登录状态

为什么 AI 对话不安全

你可能会想:我用的是正规的 AI 服务,应该没问题吧?

事实上,风险来自多个方面:

  1. 训练数据:部分 AI 服务可能将对话用于模型训练,你的信息可能被"记住"
  2. 日志记录:对话内容可能被记录在服务器上
  3. 数据泄露:即使是大公司也可能发生数据泄露事件
  4. 员工访问:某些情况下,服务提供商的员工可能有权限查看对话

核心原则

假设你发送给 AI 的任何内容都可能被公开。

如果你不愿意把某条信息贴在公告栏上,就不要发送给 AI。

常见危险场景

场景一:让 AI 检查密钥

❌ 错误做法:
"帮我检查这个 OpenAI API Key 格式对不对:sk-proj-abc123xyz..."

✅ 正确做法:
"OpenAI API Key 的格式是什么样的?"

场景二:让 AI 帮忙调试连接问题

❌ 错误做法:
"我的数据库连接失败了,连接字符串是 postgres://admin:MyP@ssw0rd@db.example.com/mydb"

✅ 正确做法:
"我的 PostgreSQL 连接失败了,错误信息是 'connection refused',可能是什么原因?"

场景三:让 AI 帮忙写配置文件

❌ 错误做法:
"帮我写一个 .env 文件,我的 Stripe 密钥是 sk_live_xxx..."

✅ 正确做法:
"帮我写一个 .env 文件的模板,包含 Stripe 配置项,用占位符表示"

如果已经发送了怎么办

如果你不小心发送了敏感信息,立即采取以下步骤:

步骤行动说明
1立即更换更换泄露的密钥/密码,不要等到"有空再说"
2检查使用记录查看相关服务的使用日志,是否有异常活动
3设置告警如果服务支持,开启异常使用告警
4清除对话如果 AI 服务支持,删除包含敏感信息的对话
5记录教训下次更加小心

安全替代方案

那么,如何让 AI 帮忙处理涉及敏感信息的场景呢?

使用占位符

javascript
// 让 AI 帮你写这样的代码:
const apiKey = process.env.API_KEY;  // 从环境变量读取
const dbUrl = process.env.DATABASE_URL;  // 不要硬编码

// 而不是:
const apiKey = "sk-真实密钥";  // 绝对不要这样

只描述问题,不暴露数据

✅ "我的 API 调用返回 401 错误,可能是什么原因?"
✅ "如何验证一个 JWT token 是否过期?"
✅ "数据库连接超时通常怎么排查?"

记住

AI 不需要看到你的真实密钥就能帮你解决问题。

就像你问医生"头疼怎么办",不需要把你的病历号告诉 AI。

5.3.3 代码中的安全隐患