Класс 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<string, mixed>Настройка для обработки 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
Проверить данные запроса на соответствие токену cookie.
Подробное описание методов
__construct() public
__construct(array<string, mixed> $config = [])
Конструктор
Параметры
-
array<string, mixed>$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
Проверить данные запроса на соответствие токену cookie.
Параметры
-
Psr\Http\Message\ServerRequestInterface$request Запрос для проверки.
-
Cake\Http\Session$session Объект сессии.
Возвращает
voidВозбуждает
Cake\Http\Exception\InvalidCsrfTokenExceptionПри неверном или отсутствующем токен CSRF.
Подробное описание свойств
$_config protected
Настройка для обработки CSRF.
-
keyКлюч сессии для использования. По умолчаниюcsrfToken-
fieldПоле формы для проверки. Изменение этого также потребует конфигурации FormHelper.
-
Тип
array<string, mixed>$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.3/class-Cake.Http.Middleware.SessionCsrfProtectionMiddleware.html