Класс CsrfProtectionMiddleware
Обеспечивает защиту и валидацию CSRF.
Этот middleware добавляет токен CSRF в cookie. Значение cookie сравнивается с данными запроса или с заголовком X-CSRF-Token при каждом запросе PATCH, POST, PUT или DELETE.
Если данные запроса отсутствуют или не совпадают с данными cookie, будет вызвано исключение InvalidCsrfTokenException.
Этот middleware автоматически интегрируется с 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 - Обработчик для вызова следующего middleware.
Возвращаемое значение
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 (соответствующее строке time). По умолчанию - сессия браузера. -
secureУстанавливать ли cookie с флагом Secure. По умолчанию - false. -
httpOnlyУстанавливать ли cookie с флагом HttpOnly. По умолчанию - 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.7/class-Cake.Http.Middleware.CsrfProtectionMiddleware.html