Skip to content

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に聞く前に、自分の頭で考えてみましょう。

テキストを入力すると有効になります