Класс SessionCsrfProtectionMiddleware
Обеспечивает защиту CSRF с помощью токенов на основе сеанса.
Этот middleware добавляет токен CSRF в сеанс. Каждый запрос должен содержать токен в данных запроса или заголовок X-CSRF-Token в каждом запросе PATCH, POST, PUT или DELETE. Это следует шаблону «токена синхронизатора».
Если данные запроса отсутствуют или не совпадают с данными сеанса, будет возбуждено исключение InvalidCsrfTokenException.
Этот middleware автоматически интегрируется с FormHelper, и при совместном использовании ваши формы будут автоматически содержать токены CSRF, когда $this->Form->create(...) используется в представлении.
Если вы используете этот middleware, не используйте также CsrfProtectionMiddleware.
См.: https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html#sychronizer-token-pattern
Константы
-
intTOKEN_VALUE_LENGTH32
Краткое описание свойств
- $_config protected
arrayНастройки для обработки CSRF.
- $skipCheckCallback protected
callable|nullОбратный вызов для определения, следует ли пропускать проверку токена для определенного запроса.
Краткое описание методов
-
__construct() public
Конструктор
-
createToken() public
Создает новый токен для защиты от CSRF
-
process() public
Проверяет и устанавливает токен CSRF в зависимости от HTTP-глагола.
-
saltToken() public
Применяет энтропию к токену CSRF
-
skipCheckCallback() public
Устанавливает обратный вызов для пропуска проверки токена для определенного запроса.
-
unsaltToken() protected
Удаляет соль из токена CSRF.
-
unsetTokenField() protected
Удаляет токен защиты от CSRF из данных запроса.
-
validateToken() protected
Проверяет данные запроса по сравнению с токеном куки.
Подробное описание методов
__construct() public
__construct(array $config = [])
Конструктор
Параметры
-
array$config optional Настройки. Смотрите $_config для допустимых ключей.
createToken() public
createToken(): string
Создает новый токен для защиты от CSRF
Этот токен — просто уникальное случайное значение, так как значение сравнения хранится в сеансе, где его невозможно изменить.
Возвращает
stringprocess() public
process(ServerRequestInterface $request, RequestHandlerInterface $handler): Psr\Http\Message\ResponseInterface
Проверяет и устанавливает токен CSRF в зависимости от HTTP-глагола.
Обрабатывает входящий запрос сервера для получения ответа. Если не может сгенерировать ответ сам, может делегировать обработку запроса предоставленному обработчику запроса.
Параметры
-
ServerRequestInterface$request Запрос.
-
RequestHandlerInterface$handler Обработчик запроса.
Возвращает
Psr\Http\Message\ResponseInterfacesaltToken() public
saltToken(string $token): string
Применяет энтропию к токену CSRF
Для предотвращения BREACH применяют случайное значение соли к токену. При сравнении токена с сеансом токен необходимо без соли.
Параметры
-
string$token Токен для добавления соли.
Возвращает
stringskipCheckCallback() public
skipCheckCallback(callable $callback): $this
Устанавливает обратный вызов для пропуска проверки токена для определенного запроса.
Проверка токена CSRF будет пропущена, если обратный вызов вернет true.
Параметры
-
callable$callback Вызываемый объект.
Возвращает
$thisunsaltToken() protected
unsaltToken(string $token): string
Удаляет соль из токена CSRF.
Если длина токена не равна TOKEN_VALUE_LENGTH * 2, это старое значение без соли, которое поддерживается для обратной совместимости.
Параметры
-
string$token Токен, который может содержать соль.
Возвращает
stringunsetTokenField() protected
unsetTokenField(Psr\Http\Message\ServerRequestInterface $request): Psr\Http\Message\ServerRequestInterface
Удаляет токен защиты от CSRF из данных запроса.
Это гарантирует, что токен не вызовет ошибок при защите от подделки запросов с помощью форм.
Параметры
-
Psr\Http\Message\ServerRequestInterface$request Объект запроса.
Возвращает
Psr\Http\Message\ServerRequestInterfacevalidateToken() protected
validateToken(Psr\Http\Message\ServerRequestInterface $request, Cake\Http\Session $session): void
Проверяет данные запроса по сравнению с токеном куки.
Параметры
-
Psr\Http\Message\ServerRequestInterface$request Запрос для проверки.
-
Cake\Http\Session$session Экземпляр сеанса.
Возвращает
voidИсключения
Cake\Http\Exception\InvalidCsrfTokenExceptionПри недействительном или отсутствующем токен CSRF.
Подробное описание свойств
$_config protected
Настройки для обработки CSRF.
-
keyКлюч сеанса для использования. По умолчаниюcsrfToken-
fieldПоле формы для проверки. Изменение этого поля также потребует настройки FormHelper.
-
Тип
array$skipCheckCallback protected
Обратный вызов для определения, следует ли пропускать проверку токена для определенного запроса.
Проверка токена CSRF будет пропущена, если обратный вызов вернёт true.
Тип
callable|null
© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/4.2/class-Cake.Http.Middleware.SessionCsrfProtectionMiddleware.html