Защита маршрутов Laravel: как исключить защиту CSRF

В Laravel защита от подделки межсайтовых запросов (CSRF) включена по умолчанию для всех маршрутов. Однако могут возникнуть ситуации, когда вам потребуется исключить защиту CSRF для определенного маршрута. В этой статье мы рассмотрим различные методы исключения защиты CSRF в маршруте Laravel и предоставим примеры кода, которые помогут вам их реализовать.

Метод 1: исключение защиты CSRF с помощью свойства except.
Один из способов исключить защиту CSRF для определенного маршрута – добавить URI маршрута к свойству except. в промежуточном программном обеспечении VerifyCsrfToken. Откройте файл app/Http/Middleware/VerifyCsrfToken.phpи добавьте URI маршрута в массив $except. Например:

protected $except = [
    'your-route-uri',
];

Метод 2: отключение промежуточного программного обеспечения CSRF для определенного маршрута.
Другой подход — отключить промежуточное программное обеспечение CSRF для определенного маршрута. Этого можно добиться, изменив файл app/Http/Kernel.php. Найдите свойство protected $middlewareGroupsи добавьте промежуточное ПО App\Http\Middleware\VerifyCsrfToken::classв массив $middleware. Затем создайте новую группу промежуточного программного обеспечения и исключите маршрут из защиты CSRF. Вот пример:

protected $middlewareGroups = [
    'web' => [
        // ...
        \App\Http\Middleware\VerifyCsrfToken::class,
        // ...
    ],
    // Add a new middleware group
    'web_exclude_csrf' => [
        // ...
        // Exclude the route from CSRF protection
    ],
];

Метод 3: добавление промежуточного программного обеспечения для конкретного маршрута.
Вы также можете создать промежуточное программное обеспечение специально для исключения защиты CSRF и применить его к нужному маршруту. Сначала сгенерируйте промежуточное программное обеспечение с помощью команды make:middlewareArtisan. Затем откройте вновь созданный файл промежуточного программного обеспечения и измените метод handle, чтобы исключить защиту CSRF. Наконец, примените промежуточное программное обеспечение к маршруту, используя метод middleware. Вот пример:

php artisan make:middleware ExcludeCsrfMiddleware

За app/Http/Middleware/ExcludeCsrfMiddleware.php:

public function handle($request, Closure $next)
{
    // Exclude CSRF protection logic here
    return $next($request);
}

В определении маршрута:

Route::post('your-route-uri', 'YourController@yourMethod')->middleware('excludeCsrf');

В этой статье мы рассмотрели три различных метода исключения защиты CSRF в маршруте Laravel. Используя свойство except, отключив промежуточное программное обеспечение CSRF или добавив промежуточное программное обеспечение для конкретного маршрута, вы можете настроить защиту CSRF в соответствии с вашими конкретными требованиями. Не забывайте проявлять осторожность при исключении защиты CSRF, поскольку это может создать угрозу безопасности. Всегда тщательно оценивайте последствия, прежде чем внедрять эти методы в свое приложение.