Класс 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 в куки ответа.
- _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 в куки ответа.
Параметры
- строка
$token - Токен для добавления.
-
Cake\Http\ServerRequest$request - Запрос для проверки.
-
Cake\Http\Response$response - Ответ.
Возвращаемое значение
@param\Cake\Http\Response $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\Network\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–2017 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.4/class-Cake.Http.Middleware.CsrfProtectionMiddleware.html