Laravel – это популярный PHP-фреймворк, известный своими надежными функциями безопасности. Одним из важнейших аспектов безопасности веб-приложений является защита от атак межсайтовой подделки запросов (CSRF). В этой статье мы рассмотрим различные методы реализации защиты токенов CSRF и безопасной отправки форм в Laravel.
- Промежуточное программное обеспечение CSRF:
Laravel обеспечивает встроенную защиту от CSRF с помощью промежуточного программного обеспечения под названием «VerifyCsrfToken». Это промежуточное программное обеспечение автоматически проверяет наличие действующего токена CSRF при каждом запросе, отличном от GET. Чтобы включить защиту CSRF, добавьте промежуточное ПО в глобальный стек промежуточного ПО в классеApp\Http\Kernel
:
protected $middleware = [
// Other middleware
\App\Http\Middleware\VerifyCsrfToken::class,
];
- Директивы формы Blade:
Обработчик шаблонов Blade в Laravel предлагает удобные директивы для генерации токенов CSRF и форм с вводом токенов. Используйте директиву@csrf
для создания скрытого поля ввода, содержащего токен CSRF:
<form method="POST" action="/example">
@csrf
<!-- Other form fields -->
</form>
- Запросы AJAX.
При отправке запросов AJAX необходимо включать токен CSRF в заголовки запросов. Laravel предоставляет глобальную переменную JavaScriptwindow.Laravel
, которая содержит значение токена CSRF. Включите этот токен в свои запросы AJAX в качестве заголовка:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': window.Laravel.csrfToken,
},
});
- Исключение маршрутов из защиты CSRF.
В некоторых случаях может потребоваться исключить определенные маршруты из защиты CSRF, например конечные точки API. Для этого добавьте URI маршрута в свойство$except
в промежуточном программном обеспеченииApp\Http\Middleware\VerifyCsrfToken
:
protected $except = [
'/api/*',
];
- Проверка защиты CSRF вручную.
Если вам необходимо вручную проверить токен CSRF, вы можете использовать вспомогательную функциюcsrf_token()
, чтобы получить значение токена и сравнить его с отправленным значением.. Например:
use Illuminate\Support\Facades\Session;
$token = csrf_token();
$submittedToken = $request->input('_token');
if (!hash_equals($token, $submittedToken)) {
// Token mismatch, handle the error
// ...
}
Защита ваших приложений Laravel от атак CSRF имеет решающее значение для поддержания безопасной среды. Используя встроенное промежуточное программное обеспечение CSRF, директивы формы Blade, обработку запросов AJAX, исключение определенных маршрутов и ручную проверку токенов CSRF, вы можете повысить безопасность своих форм и защититься от вредоносных действий.
Реализуя эти методы защиты CSRF, вы можете защитить свои приложения Laravel и обеспечить безопасность пользователей.