🛡️ CSRF Protection
❓ Что такое CSRF?
CSRF (Cross-Site Request Forgery) — это атака, при которой злоумышленник обманывает браузер пользователя и заставляет его выполнить нежелательный запрос к вашему сайту.
Например, пользователь авторизован на сайте банка, а злоумышленник отправляет от его имени перевод денег, подставив запрос на сторонней странице.
Если не защититься от CSRF, ваши формы и POST-запросы могут стать уязвимыми для таких атак.
🔑 Зачем использовать CSRF-токен?
CSRF-токен — это уникальная строка, которая генерируется сервером и вставляется в каждую форму или запрос.
Когда сервер получает POST/PUT/DELETE запрос, он проверяет, совпадает ли токен с тем, что был сгенерирован.
Если токен отсутствует или невалиден, запрос блокируется. Это защищает от поддельных запросов.
⚙️ Как работает защита в PageBlocks
PageBlocks включает CSRF-защиту по умолчанию через специальный middleware. Все POST, PUT и DELETE запросы автоматически проверяются на наличие CSRF-токена.
✅ GET-запросы не требуют проверки, так как они не изменяют состояние данных.
📌 Как добавить CSRF-токен
1️⃣ В метатег
Самый универсальный способ — добавить токен в <head> вашего шаблона:
<meta name="csrf-token" content="{csrf_token}">{csrf_token} — это функция для шаблонизатора Fenom. Этот тег автоматически подхватывается всеми AJAX-запросами pbFetch — заголовок X-CSRF-TOKEN будет подставлен при POST/PUT/DELETE.
2️⃣ В каждой форме
Если вы используете обычные формы с <form> (не только AJAX), вставьте CSRF-токен в скрытое поле:
<form method="POST" action="/profile/update">
{csrf()}
<!-- Остальные поля -->
<button type="submit">Сохранить</button>
</form>или
<form method="POST" action="/profile/update">
<input type="hidden" name="_token" value="{csrf_token}">
<!-- Остальные поля -->
<button type="submit">Сохранить</button>
</form>⚙️ Как это работает в коде
- PageBlocks автоматически добавляет CSRF middleware ко всем маршрутам, требующим защиты.
- При получении POST/PUT/DELETE запроса middleware проверяет токен из заголовка
X-CSRF-TOKENили из скрытого поля_token. - Если токен отсутствует или не совпадает — возвращается ошибка
403 Forbidden.
✅ Итог
- CSRF-защита обязательна для всех приложений, которые обрабатывают авторизованные действия.
- Добавьте
<meta name="csrf-token" ...>и скрытые поля в формы — это просто и надёжно. - Весь процесс полностью автоматизирован через middleware — вам нужно только не забывать вставлять токен.
Используйте CSRF-токен — и ваш проект будет защищён от одного из самых распространённых веб-рисков!