コードレビュー演習 · 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を取り、その請求書を取得し、全体をログに記録して返します。この抜粋では、ユーザーがこの請求書にアクセスできるかを誰が確認するかは分かりません。
認証は、ユーザーが誰かを確認します。認可は、ユーザーが何をしてよいかを確認します。Middlewareは、このエンドポイントの前にリクエストを処理するコードです。抜粋にはないチェックを含む場合があります。
最後に
リクエストが成功すれば、請求書のエンドポイントが安全だと証明できますか?
回答を解説と比較する
いいえ。一つのリクエストが動いたことを示すだけです。他の組織の請求書を読めない証拠も必要です。リクエストの経路全体、レコードがない場合の振る舞い、ログを確認します。成功したテストは、重要な要件を対象にしている必要があります。
仕事で使う
次のPRレビューで、拒否されなければならない操作のテストを一つ追加してください。
別の演習を選ぶ