Skip to content

L20. 第二次评审 (Code Review):来自黑客的凝视

Vibe Coding 宣言:安全是 1,其他都是 0。没有安全,一切归零。

0. 为什么这一课至关重要? (Why It Matters)

  • 信任危机:用户把隐私数据交给你,如果泄露了,你的产品就死了。
  • 职业素养:写出不安全的代码,是会被同行鄙视的。
  • AI 的盲区:AI 有时候为了方便,会写出硬编码密码的代码。你要帮它把关。

1. 目标 (Goal)

学会使用 SonarLint 或让 Claude 进行 安全审计 (Security Audit),修复 SQL 注入、XSS 等常见漏洞。

2. 核心概念/装备/指令 (The Core)

2.1 常见漏洞 (The Top 3)

  • SQL 注入: SELECT * FROM users WHERE name = 'admin' --'。把 -- 当注释,直接绕过密码。
  • XSS (跨站脚本): 在网页里插入恶意 JS 代码。
  • 硬编码 (Hardcoding): 把 API Key 直接写在代码里。

2.2 规范 (The Standard)

  • PEP8: Python 官方的代码风格指南。
  • Pylint: 自动检查代码规范的工具。

3. 实战演练 (Action)

Step 1: 自查硬编码

全局搜索你的代码:

  • password
  • key
  • token
  • secret 如果搜到了明文密码,赶紧把它们移到 .env 文件里!

Step 2: 预防 SQL 注入

错误写法

python
sql = f"SELECT * FROM users WHERE name = '{name}'"
cursor.execute(sql)

正确写法(参数化查询):

python
sql = "SELECT * FROM users WHERE name = ?"
cursor.execute(sql, (name,))

Step 3: 让 Claude 审计

把你的代码喂给 Claude:

markdown
# Context
这是我的核心业务代码。

# Task
请你扮演一名白帽子黑客,对这段代码进行安全审计。
重点检查:
1. SQL 注入风险。
2. 敏感信息泄露。
3. 输入验证是否充分。

Step 4: 规范性检查

运行 pylint:

bash
pip install pylint
pylint src/

根据评分修改代码,争取拿到 10 分。

4. 常见问题 (FAQ - Vibe Style)

Q: 只有几个人用的工具也要考虑安全吗? A: 如果你不想被肉鸡扫描器扫到的话。 互联网上全是自动扫描脚本,它们不分大小,只分有没有漏洞。

Q: Pylint 报错太多了,看着烦怎么办? A: 配置 .pylintrc 把那些不重要的检查项(比如变量名必须大于 3 个字符)关掉。

Q: Claude 说代码没问题,我就能放心了吗? A: 不能。 永远保持怀疑。关键模块(如支付、登录)最好请真人 Review。

5. 验收标准 (Definition of Done)

  1. 代码中无任何明文密钥。
  2. 所有的 SQL 查询都使用了参数化(?%s)。
  3. Pylint 评分 8.0 以上。
  4. 模块三结业:你的代码不仅能跑,而且跑得稳、跑得安全。

Next Mission: L21. 交互层开发:让数据说话

基于 Claude Code 构建