Skip to content

🛡️ 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> вашего шаблона:

html
<meta name="csrf-token" content="{csrf_token}">

{csrf_token} — это функция для шаблонизатора Fenom. Этот тег автоматически подхватывается всеми AJAX-запросами pbFetch — заголовок X-CSRF-TOKEN будет подставлен при POST/PUT/DELETE.

2️⃣ В каждой форме

Если вы используете обычные формы с <form> (не только AJAX), вставьте CSRF-токен в скрытое поле:

html
<form method="POST" action="/profile/update">
	{csrf()}
    <!-- Остальные поля -->
    <button type="submit">Сохранить</button>
</form>

или

html
<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-токен — и ваш проект будет защищён от одного из самых распространённых веб-рисков!

© PageBlocks 2019-present