AI写代码的毛病很一致:能用,但不安全。它优化的是“能不能跑通”,不是“扛不扛得住攻击”。OWASP专门给AI生成的代码排了个十大风险榜,排前面的就是注入、认证失败、安全配置错误、脆弱依赖、SSRF、日志缺失——全是老熟人,只是AI把它生产得更快了。
最典型的是SQL注入。AI从训练数据里学到的老代码,很可能就是字符串拼接SQL的写法,你让它“写个查询”,它给你拼一个出来。还有把权限检查放在前端、后端不校验的;日志只打console.log不落盘的;fetch用户提供的URL不带任何校验的。这些坑,AI不会自己意识到,因为它不理解你的业务里哪些数据敏感、哪些接口对外。
落地一套审查流程,不用复杂,五步够用:第一步,用工具扫——密钥扫描(gitleaks)、依赖漏洞(npm audit / composer audit)、静态分析(Semgrep带OWASP规则);第二步,人查SQL,全局搜字符串拼接的查询,确认全是参数化;第三步,人查鉴权,每个接口确认后端做了权限校验,不是只在前端藏按钮;第四步,查密钥,代码里不能有任何硬编码的密码、token、密钥;第五步,查日志和错误处理,堆栈不能裸奔给用户。
# 第一步:工具扫描,三条命令先跑起来
# 密钥扫描
gitleaks detect --source . --report-format json --report-path gitleaks.json
# PHP依赖漏洞
composer audit
# JS依赖漏洞
npm audit --omit=dev
# 第二步:全局搜SQL拼接(应返回0条)
grep -rn "mysql_query(\|mysqli_query(\|->query(" app/ --include="*.php" | grep "\$_\(GET\|POST\|REQUEST\)"
# 第四步:全局搜硬编码密钥
grep -rn -E "(password|passwd|secret|api_key|token)\s*=\s*['\"][^'\"]{6,}['\"]" config/ --include="*.php"
审查时给AI产出的代码分个级:只动界面文案、测试代码的,常规过一遍就行;碰数据库、登录鉴权、支付、上传下载、公网API的,属于高危改动,必须逐行人工审查,最好让第二个AI反向审一遍,再用工具扫一遍,三保险。别因为“AI写的应该没问题”就跳级。
OWASP那份清单,建议打印出来贴显示器旁边。每次AI生成的代码要上线,就对着过一遍。多花十分钟,省下的可能是整个数据库。这不是吓唬人——AI让写代码的门槛变低了,攻击者也一样在用AI,速度还比你快。
A5创业网 版权所有