
Codecourse
Codecourse - предостовляет короткие курсы в основом по php фреймворкам yii, laravel, symfony и пока незначательно затрагивает фронтенд...
CSRF‑атаки остаются одной из самых распространённых уязвимостей веб‑приложений. В этом материале мы разберём, как организовать аккуратную и удобную защиту от CSRF в Slim с помощью компонента Slim-Csrf, а также улучшим архитектуру и UX при работе с формами.
Cross-Site Request Forgery — это атака, при которой злоумышленник заставляет браузер пользователя выполнить нежелательный запрос от его имени. Без надлежащей проверки такие запросы могут приводить к смене паролей, отправке данных и другим критическим действиям.
В Slim 3 CSRF‑защита реализуется с помощью middleware slimphp/Slim-Csrf. Он генерирует пару токенов — имя и значение — которые необходимо передавать в каждой POST‑форме.
Добавьте middleware в контейнер и подключите его к приложению. Примерный код:
$container['csrf'] = function ($c) {
return new \Slim\Csrf\Guard;
};
$app->add($container->get('csrf'));
Чтобы формы могли получать токены, добавьте их в рендерер или view‑слой:
$csrfNameKey = $request->getAttribute('csrf_name');
$csrfValueKey = $request->getAttribute('csrf_value');
$csrfName = $request->getAttribute($csrfNameKey);
$csrfValue = $request->getAttribute($csrfValueKey);
<input type="hidden" name="{{ csrf_name }}" value="{{ csrf_value }}">
Чтобы повторно не писать код вставки токенов, стоит создать вспомогательный хелпер или middleware, автоматически передающий токены в каждый шаблон.
CSRF‑проверка может ломаться из‑за устаревших токенов, отсутствующих полей или кэширования формы.
CSRF‑защита в Slim может быть не только надёжной, но и аккуратно встроенной. Используя Slim-Csrf и небольшие архитектурные улучшения, вы получите понятную, поддерживаемую и красивую систему безопасности форм.

Codecourse - предостовляет короткие курсы в основом по php фреймворкам yii, laravel, symfony и пока незначательно затрагивает фронтенд...