Skip to content

Security Hardening 解决的是 AI 写完功能后忽略安全边界的问题。凡是涉及用户输入、登录权限、敏感数据、文件上传、数据库查询或外部服务,都要按安全约束检查,而不是只看页面能不能跑。

AI 写代码怎么做安全检查:Security Hardening 怎么用

下载 security-and-hardening 中文版 Skill ZIP

AI 写登录接口和文件上传都很快。

如果它顺手把用户输入拼进查询里,功能也许能跑,风险也已经埋下了。

安全事故不会等到你有空再处理。

security-and-hardening 这个技能提醒我们:只要代码碰到外部输入、用户身份、权限、敏感数据,就不能只按功能验收。

哪些任务必须做安全检查

看到这些关键词,就要提高警惕:

  • 登录、注册、会话、密码。
  • 权限、角色、组织、成员。
  • 用户输入、表单、富文本。
  • 数据库查询。
  • 文件上传、下载、路径处理。
  • Webhook、回调、第三方 API。
  • 支付、联系方式、个人信息。

这些不是普通功能点,而是系统边界。

AI 可以帮你写代码,但你要让它知道:这里不能只追求“能用”。

输入边界:外部数据都要验证

浏览器传来的数据不可信。

第三方 API 回来的数据也不该盲信。

CSV、JSON、Webhook、上传文件,都是外部输入。

安全检查的第一步是问:这个数据从哪里来?进入系统时有没有校验?

比如 API route 里要验证 body,文件上传要限制类型和大小,URL 参数要做格式检查。前端表单校验只能改善体验,不能当安全边界。

给 AI 的要求可以写成:

md
这个接口接收外部输入。
请在服务端边界做 schema 校验。
不要只依赖前端校验。
错误信息要对用户友好,但不要泄露内部细节。

权限:登录不等于有权操作

很多权限 bug 来自一个误解:用户登录了,就能操作资源。

这不够。

用户 A 登录后,不能修改用户 B 的订单。普通成员不能调用管理员接口。团队成员也不一定能删除整个团队。

审 AI 代码时,要特别看这些点:

  • 是否只检查了登录,没有检查资源归属。
  • 是否把角色判断放在前端。
  • 是否相信客户端传来的 userId、role、teamId。
  • 是否在列表查询和详情查询里都做了权限过滤。

权限必须在服务端关键路径上检查。

敏感数据:不要写进代码、日志和前端

AI 有时会为了方便,把 token、API Key、测试密码直接写进示例。

这在真实项目里很危险。

安全检查时要看:

  • 是否有硬编码密钥。
  • 是否把完整 token 打到日志。
  • 是否把 passwordHash、resetToken 返回给前端。
  • 是否把会话 token 存在 localStorage。
  • 错误响应是否暴露堆栈或内部配置。

敏感数据的规则很简单:少存、少传、少显示、少记录。

SQL、命令和路径不要拼字符串

只要外部输入进入 SQL、shell command、文件路径,就要特别小心。

数据库查询优先用参数化查询或 ORM 的安全 API。

文件路径要限制在允许目录下,不能让用户传 ../ 去访问任意文件。

命令执行要避免把用户输入拼进 shell 字符串。能用参数数组,就不要拼命令文本。

这类问题 AI 很容易为了省事写出危险版本,所以 review 时要盯住。

安全检查不是让 AI 过度设计

安全加固不等于什么都加。

一个本地脚本和一个公网登录接口,风险不一样。个人博客的静态页面和多租户后台,风险也不一样。

你要做的是在边界处加必要约束,而不是给每个函数都套一层防御。

古法编程讲“决策在人”。安全也是一样:AI 可以列风险,你来决定哪些必须修,哪些记录后续处理。

给 AI 的安全检查 Prompt

md
请按安全角度审查这次改动。
重点看:
1. 外部输入是否在服务端边界校验。
2. 数据库、命令、文件路径是否存在注入风险。
3. 登录和权限是否分开检查。
4. 敏感数据是否被写进代码、日志或前端响应。
5. 外部 API、Webhook、文件上传是否有限制和错误处理。

只列真实风险,不要泛泛而谈。
把问题分成必须修和可后续。

这比“帮我看看安全问题”更容易得到有用结果。

你可能还需要

同类技能:

如果一个功能碰到用户输入、登录、权限或敏感数据,安全检查应该在合并前完成。