程式碼審查練習 · 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 時,加入一個驗證禁止操作遭到拒絕的測試。
選擇另一項練習