Spec-Zone.ru › CakePHP 4.3

Класс CsrfProtectionMiddleware

Обеспечивает защиту от CSRF и валидацию.

Этот middleware добавляет токен CSRF в cookie. Значение cookie сравнивается с токеном в данных запроса или с заголовком X-CSRF-Token при каждом запросе PATCH, POST, PUT или DELETE. Это известен как техника «двойной отправки cookie».

Если данные запроса отсутствуют или не совпадают с данными cookie, будет возбуждено исключение InvalidCsrfTokenException.

Этот middleware автоматически интегрируется с FormHelper, и при совместном использовании ваши формы будут автоматически содержать токены CSRF при использовании $this->Form->create(...) в представлении.

Пространство имён: Cake\Http\Middleware
См.: https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html#double-submit-cookie

Константы

  • int
    TOKEN_VALUE_LENGTH
    16
  • int
    TOKEN_WITH_CHECKSUM_LENGTH
    56

    Токены имеют сгенерированный hmac, чтобы мы могли убедиться, что токены были сгенерированы нашим приложением.

    Должно быть TOKEN_VALUE_LENGTH + strlen(hmac)

    В настоящее время для hmac используется sha1, который создаёт 40 байт.

Краткое описание свойств

  • $_config protected
    array<string, mixed>

    Конфигурация обработки CSRF.

  • $skipCheckCallback protected
    callable|null

    Обратный вызов для принятия решения о пропуске проверки токена для конкретного запроса.

Краткое описание методов

  • __construct() public

    Конструктор

  • _addTokenCookie() protected

    Добавить токен CSRF в куки ответа.

  • _createCookie() protected

    Создать куки ответа

  • _createToken() protected deprecated

    Создать новый токен для защиты от CSRF.

  • _unsetTokenField() protected

    Удалить токен защиты от CSRF из данных запроса.

  • _validateToken() protected

    Проверить данные запроса на соответствие токену в куки.

  • _verifyToken() protected

    Проверить, что токен CSRF был первоначально сгенерирован принимающим приложением.

  • createToken() public

    Создать новый токен для защиты от CSRF.

  • isHexadecimalToken() protected

    Проверить, является ли токен токеном, предшествующим засоленным токенам.

  • process() public

    Проверяет и устанавливает токен CSRF в зависимости от HTTP-метода.

  • saltToken() public

    Применить энтропию к токену CSRF.

  • skipCheckCallback() public

    Установить обратный вызов для пропуска проверки токена для определённого запроса.

  • unsaltToken() public

    Удалить соль из токена CSRF.

  • whitelistCallback() public deprecated

    Установить обратный вызов для пропуска проверки токена для определённого запроса.

Подробное описание методов

__construct() public

__construct(array<string, mixed> $config = [])

Конструктор

Параметры

array<string, mixed> $config optional

Настройки конфигурации. Смотрите $_config для допустимых ключей.

_addTokenCookie() protected

_addTokenCookie(string $token, Psr\Http\Message\ServerRequestInterface $request, Psr\Http\Message\ResponseInterface $response): Psr\Http\Message\ResponseInterface

Добавить токен CSRF в куки ответа.

Параметры

string $token

Токен для добавления.

Psr\Http\Message\ServerRequestInterface $request

Запрос для проверки.

Psr\Http\Message\ResponseInterface $response

Ответ.

Возвращает

Psr\Http\Message\ResponseInterface

_createCookie() protected

_createCookie(string $value, Psr\Http\Message\ServerRequestInterface $request): Cake\Http\Cookie\CookieInterface

Создать куки ответа

Параметры

string $value

Значение куки

Psr\Http\Message\ServerRequestInterface $request

Объект запроса.

Возвращает

Cake\Http\Cookie\CookieInterface

_createToken() protected

_createToken(): string

Создать новый токен для защиты от CSRF

Возвращает

string

_unsetTokenField() protected

_unsetTokenField(Psr\Http\Message\ServerRequestInterface $request): Psr\Http\Message\ServerRequestInterface

Удалить токен защиты от CSRF из данных запроса.

Параметры

Psr\Http\Message\ServerRequestInterface $request

Объект запроса.

Возвращает

Psr\Http\Message\ServerRequestInterface

_validateToken() protected

_validateToken(Psr\Http\Message\ServerRequestInterface $request): void

Проверить данные запроса на соответствие токену в куки.

Параметры

Psr\Http\Message\ServerRequestInterface $request

Запрос для проверки.

Возвращает

void

Выбрасывает

Cake\Http\Exception\InvalidCsrfTokenException
При невалидном или отсутствующем токен CSRF.

_verifyToken() protected

_verifyToken(string $token): bool

Проверить, что токен CSRF был первоначально сгенерирован принимающим приложением.

Параметры

string $token

Токен CSRF.

Возвращает

bool

createToken() public

createToken(): string

Создать новый токен для защиты от CSRF

Возвращает

string

isHexadecimalToken() protected

isHexadecimalToken(string $token): bool

Проверить, является ли токен токеном, предшествующим засоленным токенам.

Эти токены являются шестнадцатеричными значениями и равны токену с длиной контрольной суммы. Хотя они уязвимы для BREACH, они должны обновляться со временем, и поддержка будет удалена в 5.x.

Параметры

string $token

Токен для проверки.

Возвращает

bool

process() public

process(ServerRequestInterface $request, RequestHandlerInterface $handler): Psr\Http\Message\ResponseInterface

Проверяет и устанавливает токен CSRF в зависимости от HTTP-метода.

Обрабатывает входящий запрос сервера, чтобы сгенерировать ответ. Если не может сгенерировать ответ самостоятельно, может делегировать задачу обработчику запросов.

Параметры

ServerRequestInterface $request

Запрос.

RequestHandlerInterface $handler

Обработчик запросов.

Возвращает

Psr\Http\Message\ResponseInterface

saltToken() public

saltToken(string $token): string

Применить энтропию к токену CSRF

Для предотвращения BREACH примените случайное значение соли к токену. При сравнении токена с сессией, токен необходимо сделать без соли.

Параметры

string $token

Токен для добавления соли.

Возвращает

string

skipCheckCallback() public

skipCheckCallback(callable $callback): $this

Установить обратный вызов для пропуска проверки токена для определённого запроса.

Обратный вызов получит экземпляр запроса в качестве аргумента и должен вернуть true если нужно пропустить проверку токена для текущего запроса.

Параметры

callable $callback

Вызываемый объект.

Возвращает

$this

unsaltToken() public

unsaltToken(string $token): string

Удалить соль из токена CSRF.

Если длина токена не равна TOKEN_VALUE_LENGTH * 2, это старый токен без соли, который поддерживается для обратной совместимости.

Параметры

string $token

Токен, который может быть с солью.

Возвращает

string

whitelistCallback() public

whitelistCallback(callable $callback): $this

Установить обратный вызов для пропуска проверки токена для определённого запроса.

Обратный вызов получит экземпляр запроса в качестве аргумента и должен вернуть true если нужно пропустить проверку токена для текущего запроса.

Параметры

callable $callback

Вызываемый объект.

Возвращает

$this

Подробное описание свойства

$_config защищенное

Настройка обработки CSRF.

  • cookieName Имя cookie для отправки.
    • expiry Значение, совместимое со строtime, определяющее, как долго должен действовать CSRF-токен. По умолчанию — сессия браузера.
    • secure Устанавливать ли cookie с флагом Secure. По умолчанию — false.
    • httponly Устанавливать ли cookie с флагом HttpOnly. По умолчанию — false.
    • samesite Атрибут "SameSite" для cookie. По умолчанию — null. Допустимые значения: CookieInterface::SAMESITE_LAX, CookieInterface::SAMESITE_STRICT, CookieInterface::SAMESITE_NONE или null.
    • field Поле формы для проверки. Изменение этого поля также потребует настройки FormHelper.

Тип

array<string, mixed>

$skipCheckCallback защищенное

Обратный вызов для определения необходимости пропуска проверки токена для определенного запроса.

Проверка 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.CsrfProtectionMiddleware.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API