Skip to content

安全与合规

一旦涉及账号、权限、付款、隐私、生产数据,就必须从“能跑就行”切到工程化流程——这一章就是那条线。

你将学会

  • 正确管理密钥与凭证,泄露后知道怎么救;
  • 判断自己碰了哪些敏感数据、该怎么保护;
  • 认识输入校验与几类常见漏洞;
  • 管理依赖供应链与许可证;
  • 认识 AI 特有的风险(提示注入、数据外泄、生成代码许可证)。

前置知识

编程心智模型速成(环境变量与密钥一节)。

一、密钥与凭证

  • 只走环境变量:写进 .env,或平台的密钥面板;
  • 不进仓库.env 加入 .gitignore
  • 不进前端:带 VITE_ / NEXT_PUBLIC_ 前缀的变量是公开的;
  • 泄露应急:立刻在平台后台作废并重新生成——改代码没用,历史记录里还在。

自查:全文搜索 keytokenpasswordsecret,看有没有硬编码。

二、用户数据与隐私

先回答三个问题:

  1. 收集了什么?(越少越好:能不收就不收)
  2. 存在哪?(本地 / 自己的服务器 / 第三方云)
  3. 谁能看到、留多久、怎么删

红线:不要收集与功能无关的个人信息;涉及实名、支付、位置、健康等敏感数据时,必须有专门的合规设计与审查,不能“顺手做着玩”。

三、输入校验与常见漏洞

所有来自用户的东西都不可信——表单、URL 参数、上传文件、接口返回。

漏洞一句话最低防护
注入把用户输入当命令/查询执行不拼接字符串,用参数化
XSS用户输入里的脚本被执行输出转义,别直接塞 HTML
越权改了 URL 就能看别人数据每次请求都校验“这是不是你的”
弱口令/无鉴权后台谁都能进鉴权 + 最小权限

一句话原则:默认不信任输入,默认最小权限。

四、依赖供应链

  • 锁版本:用 lockfile,避免自动升到有问题的版本;
  • 看审计npm audit 之类工具能报已知漏洞;
  • 数一数:为一个小功能引入几十个包,风险与维护成本都会上来;
  • 看许可证:确认依赖的许可证允许你的使用方式(商用/开源各有约束)。

五、AI 特有的风险

风险说明对策
提示注入网页/文件里的恶意文字诱导 AI 做危险操作不把不可信内容直接当指令;关键操作要人工确认
数据外泄把敏感内容贴进对话、或让 AI 联网发送脱敏;不贴密钥与真实用户数据
生成代码许可证AI 可能产出与训练数据相似的代码关键项目做来源核查,保留许可说明

给 AI 的边界要写进提示或项目指令文件不改动密钥、不发起外部请求、不执行未确认的危险命令。

六、上线前安全检查清单

  • 仓库里没有密钥、.env、真实用户数据;
  • 所有用户输入都做了校验与转义;
  • 涉及他人数据的接口都校验了权限;
  • 依赖来源清楚,锁了版本,无高危漏洞;
  • 线上密钥用平台环境变量,未进代码;
  • 有备份与回滚方案;
  • 涉及身份 / 付款 / 外部写操作时,已做专门设计与审查。

动手练习

  1. 全文搜索 key/token/password/secret,确认没有硬编码;
  2. 跑一次依赖审计(如 npm audit),看有没有高危项;
  3. 列出你的项目“碰了哪些敏感数据、分别怎么保护”。

检查点

  • 能列出本项目涉及的敏感数据与保护方式;
  • 能说出密钥泄露后的应急步骤;
  • 能对一次上线安全自查给出结论。

常见问题

Q:个人小项目也要这么严吗? 只看本地、不碰他人数据的玩具项目可以放宽。一旦上公网、一旦碰别人的数据,就必须按上面的清单走。

Q:把报错贴给 AI 会不会泄露? 会——报错里可能带密钥、内网地址、用户数据。先脱敏再贴。

小结与下一步

安全不是“最后加一道锁”,而是从第一行代码起的习惯。接下来可以进入进阶:AI 应用开发

陶渊明的小院 · 基于 VitePress 构建