代码审查练习 · 8 分钟

审查 AI 生成的变更

检查一个简短端点。决定接受变更前需要哪些证据。

当前情况

AI 助手提出一个发票端点。已登录用户只能查看自己组织的发票。你正在发布前审查此变更。

要做什么

  1. 阅读代码及其通俗解释,无需运行代码。
  2. 选择接受前所需的全部检查。检查答案、阅读理由;如有遗漏,再试一次。
需要背景知识?阅读课程

你正在审查这个 PR。功能只能向同一组织内已通过身份验证的用户返回发票。此片段并不完整。

// Fictional, incomplete example. Do not deploy.
app.get('/invoices/:id', async (req, res) => {
  const invoice = await db.invoice.findUnique({
    where: { id: req.params.id }
  });
  console.log('Invoice response', invoice);
  return res.json(invoice);
});
代码做了什么?

端点从请求取得发票 ID,获取发票,将完整发票写入日志并返回。片段没有展示谁检查用户对这张发票的访问权。

身份验证检查用户是谁,授权检查用户能做什么。中间件是在此端点之前处理请求的代码,可能包含片段未展示的检查。

选择全部必要审查操作。

完成前

一次成功请求,能证明发票端点安全吗?

将你的答案与解释比较

不能。它只能证明一次请求成功。还需要证据证明用户无法读取另一组织的发票。检查完整请求路径、记录不存在时的行为,以及日志。成功测试必须覆盖关键要求。

应用到工作中

下次 PR 审查时,为一项必须被拒绝的操作添加测试。

选择其他练习