Класс CsrfComponent
Обеспечивает защиту от CSRF и валидацию.
Этот компонент добавляет токен CSRF в cookie. Значение cookie сравнивается с данными запроса или заголовком X-CSRF-Token для каждого запроса PATCH, POST, PUT или DELETE.
Если данные запроса отсутствуют или не совпадают с данными cookie, будет вызвано исключение InvalidCsrfTokenException.
Этот компонент автоматически интегрируется с FormHelper, и при совместном использовании ваши формы будут автоматически содержать токены CSRF, когда $this->Form->create(...), используется в представлении.
- Cake\Controller\Component реализует Cake\Event\EventListenerInterface использует Cake\Core\InstanceConfigTrait , Cake\Log\LogTrait
-
Cake\Controller\Component\CsrfComponent
Краткое описание свойств
-
$_defaultConfigprotectedЗначения конфигурации по умолчанию для обработки CSRF.array
Унаследованные свойства
Краткое описание методов
- _setCookie() protectedУстановка cookie в ответе.
- _validateToken() protectedВалидация данных запроса относительно токена cookie.
- implementedEvents() publicПоддерживаемые события этого компонента.
- startup() publicОбработчик запуска.
Подробное описание методов
_setCookie()source protected
_setCookie( Cake\Network\Request $request , Cake\Network\Response $response )
Установка cookie в ответе.
Также устанавливает request->params['_csrfToken'], чтобы новый токен был доступен в данных запроса.
Параметры
-
Cake\Network\Request$request - Объект запроса.
-
Cake\Network\Response$response - Объект ответа.
_validateToken()source protected
_validateToken( Cake\Network\Request $request )
Валидация данных запроса относительно токена cookie.
Параметры
-
Cake\Network\Request$request - Запрос для проверки.
Исключения
Cake\Network\Exception\InvalidCsrfTokenExceptionесли токен CSRF недействителен или отсутствует.
implementedEvents()source public
implementedEvents( )
Поддерживаемые события этого компонента.
Возвращает
массивПереопределяет
Cake\Controller\Component::implementedEvents() startup()source public
startup( Cake\Event\Event $event )
Обработчик запуска.
Валидирует токен CSRF для данных POST. Если запрос GET и значение cookie отсутствует, будет установлено cookie.
После установки cookie он копируется в request->params['_csrfToken'], чтобы код приложения и фреймворка могли легко получить доступ к токену CSRF.
Запросы RequestAction не проверяются и не будут устанавливать cookie, если оно отсутствует.
Параметры
-
Cake\Event\Event$event - Объект события.
Методы, унаследованные от Cake\Controller\Component
__construct()source public
__construct( Cake\Controller\ComponentRegistry $registry , array $config [] )
Конструктор
Параметры
-
Cake\Controller\ComponentRegistry$registry - КомпонентRegistry, который может использовать этот компонент для ленивой загрузки компонентов
- массив
$configнеобязательно [] - Массив настроек конфигурации.
__debugInfo()source public
__debugInfo( )
Возвращает массив, который можно использовать для описания внутреннего состояния этого объекта.
Возвращает
массив__get()source public
__get( string $name )
Магический метод для ленивой загрузки $components.
Параметры
- строка
$name - Имя компонента для получения.
Возвращает
смешанныйОбъект компонента или null.
initialize()source public
initialize( array $config )
Метод-обработчик конструктора.
Реализуйте этот метод, чтобы избежать необходимости перезаписывать конструктор и вызывать родительский.
Параметры
- массив
$config - Настройки конфигурации, предоставленные этому компоненту.
Методы, используемые из Cake\Core\InstanceConfigTrait
_configDelete()source protected
_configDelete( string $key )
Удаление одного ключа конфигурации
Параметры
- строка
$key - Ключ для удаления.
Исключения
Cake\Core\Exception\Exceptionпри попытке перезаписи существующей конфигурации
_configRead()source protected
_configRead( string|null $key )
Чтение переменной конфигурации
Параметры
- строка|null
$key - Ключ для чтения.
Возвращает
смешанный_configWrite()source protected
_configWrite( string|array $key , mixed $value , boolean|string $merge false )
Запись переменной конфигурации
Параметры
- строка|массив
$key - Ключ для записи.
- смешанный
$value - Значение для записи.
- булево|строка
$mergeнеобязательно false Истинно для рекурсивного слияния, 'shallow' для простого слияния, ложно для перезаписи, по умолчанию ложно.
Исключения
Cake\Core\Exception\Exceptionпри попытке перезаписи существующей конфигурации
config()source public
config( string|array|null $key null , mixed|null $value null , boolean $merge true )
Использование
Чтение всей конфигурации:
$this->config();
Чтение конкретного значения:
$this->config('key'); Чтение вложенного значения:
$this->config('some.nested.key'); Установка конкретного значения:
$this->config('key', $value); Установка вложенного значения:
$this->config('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->config(['one' => 'value', 'another' => 'value']);
Параметры
- строка|массив|null
$keyнеобязательно null - Ключ для получения/установки или полный массив конфигураций.
- смешанный|null
$valueнеобязательно null - Значение для установки.
- булево
$mergeнеобязательно true - Рекурсивно сливать или перезаписывать существующую конфигурацию, по умолчанию истинно.
Возвращает
смешанныйЗначение конфигурации для чтения, или сам объект при операциях записи.
Исключения
Cake\Core\Exception\Exceptionпри попытке установить недействительный ключ.
configShallow()source public
configShallow( string|array $key , mixed|null $value null )
Объединить предоставленную конфигурацию с существующей конфигурацией. В отличие от config(), которая выполняет рекурсивное объединение для вложенных ключей, этот метод выполняет простое объединение.
Установка конкретного значения:
$this->config('key', $value); Установка вложенного значения:
$this->config('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->config(['one' => 'value', 'another' => 'value']);
Параметры
- string|array
$key - Ключ для установки или полный массив конфигураций.
- mixed|null
$valueнеобязательно null - Значение для установки.
Возвращаемое значение
$this Сам объект.
Методы, используемые из Cake\Log\LogTrait
log()source public
log( mixed $msg , integer|string $level LogLevel::ERROR , string|array $context [] )
Удобный метод для записи сообщения в журнал. Для получения дополнительной информации о записи в журналы см. Log::write().
Параметры
- mixed
$msg - Сообщение журнала.
- integer|string
$levelнеобязательно LogLevel::ERROR - Уровень ошибки.
- string|array
$contextнеобязательно [] - Дополнительные данные журнала, относящиеся к этому сообщению.
Возвращаемое значение
booleanУспех записи в журнал.
Подробности свойств
$_defaultConfigsource
protected array
Настройка по умолчанию для обработки CSRF.
- cookieName = Имя cookie для отправки.
- expiry = Сколько времени должен действовать CSRF-токен. По умолчанию — сеанс браузера.
- secure = Устанавливать ли cookie с флагом Secure. По умолчанию — false.
- httpOnly = Устанавливать ли cookie с флагом HttpOnly. По умолчанию — 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.3/class-Cake.Controller.Component.CsrfComponent.html