Введение
Подделка межсайтовых запросов (CSRF) – это распространенная уязвимость веб-безопасности, которая может привести к непреднамеренному выполнению пользователями несанкционированных действий. Laravel, популярный PHP-фреймворк, обеспечивает встроенную защиту от атак CSRF, генерируя и проверяя токены CSRF. В этой статье мы рассмотрим различные методы добавления токенов CSRF в Laravel и защиты вашего приложения от атак CSRF.
- Использование промежуточного программного обеспечения
csrf
Laravel предоставляет промежуточное программное обеспечение под названием VerifyCsrfToken
, которое автоматически добавляет к маршрутам защиту CSRF. Это промежуточное программное обеспечение уже включено в группу промежуточного программного обеспечения web
, которая применяется к маршрутам, определенным в файле routes/web.php
. Чтобы добавить защиту CSRF к вашим маршрутам, просто определите их в группе промежуточного программного обеспечения web
:
Route::middleware('web')->group(function () {
// Routes with CSRF protection
});
По умолчанию Laravel автоматически генерирует токен CSRF для каждого сеанса пользователя и проверяет его при каждом запросе POST, PUT, PATCH и DELETE.
- Добавление токена CSRF в формы вручную
Laravel предоставляет вспомогательную функцию csrf
, которая генерирует скрытое поле ввода HTML, содержащее токен CSRF. Вы можете вручную добавить этот токен в свои HTML-формы, чтобы защитить их от атак CSRF. Вот пример:
<form method="POST" action="/your-route">
@csrf
<!-- Other form fields -->
<button type="submit">Submit</button>
</form>
Директива @csrf
будет заменена следующим HTML-выводом:
<input type="hidden" name="_token" value="csrf-token-value">
- Использование запросов AJAX
При отправке запросов AJAX вам необходимо включить токен CSRF в заголовки запросов. Laravel предоставляет удобный способ извлечь значение токена CSRF и включить его в ваши запросы AJAX. Вот пример использования jQuery:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: '/your-route',
type: 'POST',
// Other AJAX options
});
Обязательно включите следующий метатег в раздел <head>
вашего файла макета HTML:
<meta name="csrf-token" content="csrf-token-value">
- Настройка имени поля токена CSRF
По умолчанию Laravel использует имя поля _token
для токена CSRF. Однако при необходимости вы можете настроить его. В промежуточном программном обеспечении App\Http\Middleware\VerifyCsrfToken
переопределите метод token
:
protected function token($request)
{
return $request->input('your_custom_field_name') ?: $request->header('X-CSRF-TOKEN');
}
Не забудьте соответствующим образом обновить свои формы и запросы AJAX.
Заключение
Добавление защиты токенов CSRF имеет решающее значение для защиты вашего приложения Laravel от атак CSRF. В этой статье мы рассмотрели несколько методов добавления токенов CSRF в Laravel, включая использование промежуточного программного обеспечения csrf
, ручное добавление токена в формы, обработку запросов AJAX и настройку имени поля токена. Внедрив эти методы, вы сможете значительно повысить безопасность своего приложения и защитить данные своих пользователей от несанкционированных действий.
Не забывайте всегда уделять приоритетное внимание безопасности в своих проектах веб-разработки и быть в курсе последних рекомендаций по защите ваших приложений от потенциальных уязвимостей.