Класс 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 - ComponentRegistry, который может использовать этот компонент для ленивой загрузки своих компонентов
- массив
$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 True для рекурсивного слияния, 'shallow' для простого слияния, false для перезаписи, по умолчанию false.
Исключения
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 - Рекурсивно сливать или перезаписывать существующую конфигурацию, по умолчанию 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']);
Параметры
- строка|массив
$key - Ключ для установки или полный массив настроек.
- смешанный|null
$valueнеобязательно null - Значение для установки.
Возвращаемое значение
$this Объект сам по себе.
Методы, используемые из Cake\Log\LogTrait
log()source public
log( mixed $msg , integer|string $level LogLevel::ERROR , string|array $context [] )
Удобный метод для записи сообщения в журнал. Для получения дополнительной информации о записи в журналы см. Log::write().
Параметры
- смешанный
$msg - Сообщение для журнала.
- целое число|строка
$levelнеобязательно LogLevel::ERROR - Уровень ошибки.
- строка|массив
$contextнеобязательно [] - Дополнительные данные журнала, относящиеся к этому сообщению.
Возвращаемое значение
booleanРезультат записи в журнал.
Подробное описание свойств
$_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–2016 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.
http://api.cakephp.org/3.2/class-Cake.Controller.Component.CsrfComponent.html