Документация/Контейнер/Сервисы/Csrf

Защита от CSRF

Сервис Csrf фреймворка HLEB2 предназначен для защиты от атак CSRF(Сross-Site Request Forgery), основанных на межсайтовых подделках запроса пользователей.

Принцип защиты представлен во фреймворке передачей токена через frontend приложения и одновременно с сохранением значения токена в сессию пользователя. Значения эти будут сверены фреймворком, чтобы убедиться, что пользователь пришел со страницы, где этот токен был установлен, в противном случае будет выведено сообщение об ошибке.

Чтобы фреймворк проверял переданный токен необходимо к целевому маршруту добавить метод protect().

Способы использования сервиса Csrf в контроллерах (и всех классах, унаследованных от Hleb\Base\Container) на примере получения хеш-кода для проверки запроса:

// variant 1
use Hleb\Reference\CsrfInterface;
$token $this->container->get(CsrfInterface::class)->token();

// variant 2
$token $this->container->csrf()->token();

Пример обращения к сервису Csrf в коде шаблонов:

<?php
/** @var \App\Bootstrap\ContainerInterface $container */
?>
<form action="/url">
    <!-- ... -->
    <input type="hidden" name="_token" value="<?= $container->csrf()->token(); ?>">
</form>

Для шаблонизатора TWIG:

<form action="/url">
    <!-- ... -->
    <
input type="hidden" name="_token" value="{{ container.csrf.token }}">
</
form>

Также объект Csrf может быть получен через внедрение зависимостей по интерфейсу Hleb\Reference\Interface\Csrf.


#token()

Метод token() возвращает уникальный токен сеанса пользователя.


#field()

Метод field() возвращает HTML-контент для вставки в форму для передачи токена с другими данными.


#validate()

При помощи этого метода можно проверить вручную токен (если защита не включена в маршруте).

Получение настроек Преобразование в PSR

Страница создана: @fomiash
К началу страницы