代码审查练习 · 8 分钟
审查 AI 生成的变更
检查一个简短端点。决定接受变更前需要哪些证据。
当前情况
AI 助手提出一个发票端点。已登录用户只能查看自己组织的发票。你正在发布前审查此变更。
你正在审查这个 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 审查时,为一项必须被拒绝的操作添加测试。
选择其他练习