diff --git a/src/I18n/Messages.php b/src/I18n/Messages.php index 040be73..8bf2e40 100644 --- a/src/I18n/Messages.php +++ b/src/I18n/Messages.php @@ -293,6 +293,25 @@ class Messages 'config.env_no_default' => '変数が存在しない場合に問題を引き起こす可能性があるデフォルト値なしの env() が呼び出されています。', 'config.env_no_default.rec' => 'デフォルト値を指定してください: env(\'KEY\', \'default\')', + // Laravel-specific messages + 'laravel.name' => 'Laravelセキュリティ', + 'laravel.mass_assignment' => 'Eloquentモデル \':class\' に $fillable または $guarded プロパティが定義されていません。Mass Assignment攻撃に対して脆弱です。', + 'laravel.mass_assignment.rec' => 'モデルに protected $fillable = [...] または protected $guarded = [...] を定義してください。', + 'laravel.mass_assignment_all' => ':method() で $request->all() を使用しています。Mass Assignment攻撃のリスクがあります。', + 'laravel.mass_assignment_all.rec' => '$request->only([\'field1\', \'field2\']) または $request->validated() を使用してください。', + 'laravel.raw_sql' => ':method() でパラメータバインディングなしの生SQLを使用しています。SQLインジェクションのリスクがあります。', + 'laravel.raw_sql.rec' => 'バインディングを使用してください: ->:method(\'column = ?\', [$value])', + 'laravel.db_raw' => 'DB::raw() に変数が含まれています。SQLインジェクションのリスクがあります。', + 'laravel.db_raw.rec' => 'パラメータバインディングを使用するか、DB::raw() でのユーザー入力の使用を避けてください。', + 'laravel.csrf_missing' => 'POST/PUT/PATCH/DELETE フォームに CSRF 保護がありません。', + 'laravel.csrf_missing.rec' => 'フォーム内に @csrf ディレクティブを追加してください。', + 'laravel.file_validation' => 'ファイルフィールド \':field\' は extensions のみで検証されています。MIMEタイプの検証がありません。', + 'laravel.file_validation.rec' => 'mimes または mimetypes ルールを追加してください: \'file|mimes:jpg,png\'', + 'laravel.route_auth' => 'センシティブなルート \':route\' に認証ミドルウェアがない可能性があります。', + 'laravel.route_auth.rec' => 'middleware(\'auth\') または middleware(\'auth:sanctum\') を追加してください。', + 'laravel.route_throttle' => '認証関連ルート \':route\' にレート制限がない可能性があります。', + 'laravel.route_throttle.rec' => 'ブルートフォース攻撃を防ぐために middleware(\'throttle:login\') を追加してください。', + // Report messages 'report.title' => 'セキュリティスキャン結果', 'report.generated' => '生成日時', @@ -537,6 +556,25 @@ class Messages 'config.env_no_default' => 'env() called without default value may cause issues if variable is missing.', 'config.env_no_default.rec' => 'Provide a default value: env(\'KEY\', \'default\')', + // Laravel-specific messages + 'laravel.name' => 'Laravel Security', + 'laravel.mass_assignment' => 'Eloquent model \':class\' has no $fillable or $guarded property defined. Vulnerable to Mass Assignment attacks.', + 'laravel.mass_assignment.rec' => 'Define protected $fillable = [...] or protected $guarded = [...] in the model.', + 'laravel.mass_assignment_all' => ':method() uses $request->all(). Risk of Mass Assignment attack.', + 'laravel.mass_assignment_all.rec' => 'Use $request->only([\'field1\', \'field2\']) or $request->validated() instead.', + 'laravel.raw_sql' => ':method() uses raw SQL without parameter binding. Risk of SQL injection.', + 'laravel.raw_sql.rec' => 'Use bindings: ->:method(\'column = ?\', [$value])', + 'laravel.db_raw' => 'DB::raw() contains variables. Risk of SQL injection.', + 'laravel.db_raw.rec' => 'Use parameter bindings or avoid user input in DB::raw().', + 'laravel.csrf_missing' => 'POST/PUT/PATCH/DELETE form is missing CSRF protection.', + 'laravel.csrf_missing.rec' => 'Add @csrf directive inside the form.', + 'laravel.file_validation' => 'File field \':field\' is validated with extensions only. Missing MIME type validation.', + 'laravel.file_validation.rec' => 'Add mimes or mimetypes rule: \'file|mimes:jpg,png\'', + 'laravel.route_auth' => 'Sensitive route \':route\' may be missing authentication middleware.', + 'laravel.route_auth.rec' => 'Add middleware(\'auth\') or middleware(\'auth:sanctum\').', + 'laravel.route_throttle' => 'Auth-related route \':route\' may be missing rate limiting.', + 'laravel.route_throttle.rec' => 'Add middleware(\'throttle:login\') to prevent brute force attacks.', + // Report messages 'report.title' => 'Security Scan Results', 'report.generated' => 'Generated',