Класс CsrfProtectionMiddleware
Обеспечивает защиту и валидацию CSRF.
Этот промежуточный обработчик добавляет маркер CSRF в cookie. Значение cookie сравнивается с данными запроса или с заголовком X-CSRF-Token для каждого запроса PATCH, POST, PUT или DELETE.
Если данные запроса отсутствуют или не совпадают с данными cookie, будет поднято исключение InvalidCsrfTokenException.
Этот промежуточный обработчик автоматически интегрируется с FormHelper, и при использовании вместе ваши формы будут автоматически добавлять маркеры CSRF, когда $this->Form->create(...) используется в представлении.
Краткое описание свойств
-
$_configprotectedНастройкаarray -
$_defaultConfigprotectedНастройка по умолчанию для обработки CSRF.array
Краткое описание методов
- __construct() publicКонструктор
- __invoke() publicПроверяет и устанавливает маркер CSRF в зависимости от HTTP-метода.
- _addTokenCookie() protectedДобавляет маркер CSRF в cookie ответа.
- _addTokenToRequest() protectedДобавляет маркер CSRF в параметры запроса.
- _createToken() protectedСоздаёт новый маркер для защиты CSRF
- _validateAndUnsetTokenField() protectedПроверяет, является ли запрос POST, PUT, DELETE или PATCH и валидирует маркер CSRF
- _validateToken() protectedВалидирует данные запроса относительно маркера cookie.
Подробное описание методов
__construct()source public
__construct( array $config = [] )
Конструктор
Параметры
- массив
$configнеобязательно [] - Параметры конфигурации. См. $_defaultConfig для допустимых ключей.
__invoke()source public
__invoke( Cake\Http\ServerRequest $request , Cake\Http\Response $response , callable $next )
Проверяет и устанавливает маркер CSRF в зависимости от HTTP-метода.
Параметры
-
Cake\Http\ServerRequest$request - Запрос.
-
Cake\Http\Response$response - Ответ.
- вызов
$next - Обратный вызов для вызова следующего промежуточного обработчика.
Возвращает
Cake\Http\ResponseОтвет
_addTokenCookie()source protected
_addTokenCookie( string $token , Cake\Http\ServerRequest $request , Cake\Http\Response $response )
Добавляет маркер CSRF в cookie ответа.
Параметры
- строка
$token - Маркер для добавления.
-
Cake\Http\ServerRequest$request - Запрос для валидации.
-
Cake\Http\Response$response - Ответ.
Возвращает
Cake\Http\ResponseИзменённый ответ.
_addTokenToRequest()source protected
_addTokenToRequest( string $token , Cake\Http\ServerRequest $request )
Добавляет маркер CSRF в параметры запроса.
Параметры
- строка
$token - Маркер для добавления.
-
Cake\Http\ServerRequest$request - Запрос для дополнения
Возвращает
Cake\Http\ServerRequestИзменённый запрос
_createToken()source protected
_createToken( )
Создаёт новый маркер для защиты CSRF
Возвращает
строка_validateAndUnsetTokenField()source protected
_validateAndUnsetTokenField( Cake\Http\ServerRequest $request )
Проверяет, является ли запрос POST, PUT, DELETE или PATCH и валидирует маркер CSRF
Параметры
-
Cake\Http\ServerRequest$request - Объект запроса.
Возвращает
Cake\Http\ServerRequest_validateToken()source protected
_validateToken( Cake\Http\ServerRequest $request )
Валидирует данные запроса относительно маркера cookie.
Параметры
-
Cake\Http\ServerRequest$request - Запрос для валидации.
Выбрасывает
Cake\Http\Exception\InvalidCsrfTokenExceptionПри невалидном или отсутствующем маркете CSRF.
Подробное описание свойств
$_defaultConfigsource
protected массив
Настройка по умолчанию для обработки CSRF.
-
cookieNameИмя cookie для отправки.-
expiryСовместимое со строковым значением время, в течение которого должен существовать маркер CSRF. По умолчанию — сессия браузера. -
secureУказывает, будет ли устанавливаться флаг Secure для cookie. По умолчанию — false. -
httpOnlyУказывает, будет ли устанавливаться флаг HttpOnly для cookie. По умолчанию — false. -
fieldПоле формы для проверки. Изменение этого также потребует настройки FormHelper.
-
[
'cookieName' => 'csrfToken',
'expiry' => 0,
'secure' => false,
'httpOnly' => false,
'field' => '_csrfToken',
]
© 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/3.6/class-Cake.Http.Middleware.CsrfProtectionMiddleware.html