Appearance
AI コードのレビュー ― 問題を全て見つける
この章のキーワード
| 用語 | 意味 | なぜ重要か |
|---|---|---|
| コードレビュー | コードの品質・安全性を検証する作業 | 本番投入前の最後の防御線 |
| SSRF | サーバーに任意の URL へリクエストを送らせる攻撃 | callback_url を信用すると発生 |
| Authority Fallacy | 権威があるから正しい、という誤った推論 | 「AIが書いた」「本番コードだ」等 |
総合演習
AI に以下のコードを生成させました。問題を全て見つけてください。
php
// AI 生成: 外部イベント受信 API
Route::post('/api/events', function (Request $request) {
$payload = $request->all();
$friend = Friend::where('line_user_id', $payload['line_user_id'])->first();
if (!$friend) {
return response()->json(['error' => 'User not found'], 404);
}
DB::transaction(function () use ($friend, $payload) {
$event = ExternalEvent::create([
'friend_id' => $friend->id,
'event_type' => $payload['event_type'],
'payload' => json_encode($payload),
]);
// シナリオ実行
app(ScenarioTriggerService::class)->trigger($friend, $payload['event_type']);
// 結果を Webhook で通知
Http::post($payload['callback_url'], [
'status' => 'completed',
'event_id' => $event->id,
]);
});
return response()->json(['status' => 'ok']);
});AI禁止ゾーン
このコードの 問題点を全て 挙げてください。
Part 1-9 で学んだ観点を使いましょう:
- セキュリティ(認証、入力検証)
- エラーハンドリング
- 非同期設計
- トランザクション設計
- 冪等性
- ログ
- レート制限
AIに聞く前に、自分の頭で考えてみましょう。
テキストを入力すると有効になります