5.3.2 绝对禁区:永远不要告诉 AI 的东西
经过本节学习,你将掌握:
- 哪些信息绝对不能发送给 AI
- 为什么这些信息会带来风险
- 如果已经发送了该怎么补救
- 如何安全地让 AI 帮你处理敏感场景
绝对禁令清单
永远不要在与 AI 对话时发送以下内容:
| 类型 | 示例 | 为什么危险 |
|---|---|---|
| API 密钥 | sk-abc123...、AKIA... | 可被用于消费你的账户,或访问你的云服务 |
| 数据库连接字符串 | postgres://user:pass@host/db | 攻击者可直接访问你的数据库 |
| 密码 | 任何真实密码 | 身份被盗用,账户被入侵 |
| 私钥/证书 | -----BEGIN RSA PRIVATE KEY----- | 可用于伪装成你的身份,入侵你的系统 |
| 个人身份信息 | 身份证号、银行卡号、社保号 | 隐私泄露,可能被用于诈骗 |
| 公司/学校机密 | 内部文档、客户数据、商业秘密 | 数据泄露,可能违反保密协议 |
| Token/Session | JWT token、登录凭证 | 可用于冒充你的登录状态 |
为什么 AI 对话不安全
你可能会想:我用的是正规的 AI 服务,应该没问题吧?
事实上,风险来自多个方面:
- 训练数据:部分 AI 服务可能将对话用于模型训练,你的信息可能被"记住"
- 日志记录:对话内容可能被记录在服务器上
- 数据泄露:即使是大公司也可能发生数据泄露事件
- 员工访问:某些情况下,服务提供商的员工可能有权限查看对话
核心原则
假设你发送给 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。
