لا تستخدم Route::get لتعديل البيانات

لا تستخدم Route::get لتعديل البيانات

2024-09-05 وقت القراءه : 1 دقائق

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، بالتالي يمكن طلب الرابط من أي مكان.

إضافة تعليق
Loading...