Bad Practice Example
Route::get('user/{user}/activate', [UserController::class, 'activate']); Route::get('user/{user}/delete', [UserController::class, 'destroy']);
What To Do Instead
Route::post('user/{user}/activate', [UserController::class, 'activate']); Route::delete('user/{user}/delete', [UserController::class, 'destroy']); // Also add @csrf in the Blade: <form action="{{ route('users.activate', $user) }}" method="POST"> @csrf </form>
بالوضع الإفتراضي يوفر إطار العمل لارافيل، الحماية من ثغرة CSRF للطلبات التالية POST/PUT/PATCH/DELETE، لكن لا تستخدم هذه الحماية للطلب من نوع GET، فإذا قمت بإستخدام GET للتعديل على البيانات (تعديل، حذف، إضافة) فإنك سوف تفقد الحماية من ثغرة CSRF، بالتالي يمكن طلب الرابط من أي مكان.