Класс SecurityComponent
Компонент SecurityComponent предоставляет простой способ интеграции более строгой безопасности в ваше приложение. Он предоставляет методы для различных задач, таких как:
- Ограничение HTTP-методов, принимаемых вашим приложением.
- Защита от подделки форм
- Требование использования SSL.
- Ограничение межконтроллерной коммуникации.
- Cake\Controller\Component реализует Cake\Event\EventListenerInterface использует Cake\Core\InstanceConfigTrait , Cake\Log\LogTrait
-
Cake\Controller\Component\SecurityComponent
Ссылка: https://book.cakephp.org/3.0/ru/controllers/components/security.html
Расположение: Controller/Component/SecurityComponent.php
Краткое описание констант
-
stringDEFAULT_EXCEPTION_MESSAGE'The request has been black-holed'
Краткое описание свойств
-
$_actionprotectedТекущее действие контроллераstring -
$_defaultConfigprotectedЗначение по умолчаниюarray - Объект сессии
$sessionpublic
Унаследованные свойства
Краткое описание методов
- Проверка необходимости авторизации
- _callback() protectedВызов метода обратного вызова контроллера
- _debugCheckFields() protectedПроверка данных на соответствие ожидаемым значениям
- _debugExpectedFields() protectedГенерирует сообщение об ожидаемых полях для отладки
- _debugPostTokenNotMatching() protectedГенерирует сообщение о несоответствии токена для пользователя
- _fieldsList() protectedВозвращает список полей для вычисления хеша
- _hashParts() protectedВозвращает части хеша для генерации токена
- _matchExistingFields() protected
Генерирует массив сообщений для существующих полей в данных POST, поля, соответствующие dataFields в $expectedFields, будут удалены
- _requireMethod() protectedУстанавливает действия, требующие HTTP-запрос с указанным методом, или пусто для всех действий
- _secureRequired() protectedПроверяет, требует ли доступ защищённое соединение
- _sortedUnlocked() protectedПолучает отсортированную строку разблокированных элементов
- _throwException() protectedПроверяет статус отладки и выбрасывает исключение на основе существующего
- _unlocked() protectedПолучает строку разблокированных элементов
- _validToken() protectedПроверяет, является ли токен валидным
- _validatePost() protectedПроверка отправленной формы
- blackHole() public
Обрабатывает недействительный запрос с ошибкой 400 или с использованием пользовательской функции обратного вызова. Если в SecurityComponent::$blackHoleCallback указана функция обратного вызова, она будет использована путём вызова метода, указанного в $error
- generateToken() public
Вручную добавляет информацию о предотвращении подделки форм в предоставленный объект запроса.
- implementedEvents() publicПоддерживаемые события компонента.
- Устанавливает действия, требующие формовые данные с белым списком.
- requireSecure() publicУстанавливает действия, требующие запроса с SSL-защитой, или пусто для всех действий
- startup() publicИнициализация компонента. Все проверки безопасности выполняются здесь.
Подробное описание методов
_authRequired()source protected deprecated
_authRequired( Cake\Controller\Controller $controller )
Проверка необходимости авторизации
Deprecated
3.2.2 Эта функция запутанная и бесполезная.Параметры
-
Cake\Controller\Controller$controller - Экземпляр контроллера
Возвращает
booleantrue, если требуется авторизация
_callback()source protected
_callback( Cake\Controller\Controller $controller , string $method , array $params = [] )
Вызов метода обратного вызова контроллера
Параметры
-
Cake\Controller\Controller$controller - Экземпляр контроллера
- строка
$method - Метод для выполнения
- массив
$paramsдополнительный [] - Параметры для передачи методу
Возвращает
смешанный типОтвет метода обратного вызова контроллера
Выбрасывает
Cake\Http\Exception\BadRequestExceptionЕсли blackholeCallback не вызываемый.
_debugCheckFields()source protected
_debugCheckFields( array $dataFields , array $expectedFields = [] , string $intKeyMessage = '' , string $stringKeyMessage = '' , string $missingMessage = '' )
Проверяет данные на соответствие ожидаемым значениям
Параметры
- массив
$dataFields - Массив полей, содержащий данные POST
- массив
$expectedFieldsдополнительный [] - Массив полей, содержащий ожидаемые поля в POST
- строка
$intKeyMessageдополнительный '' - Сообщение, если неожиданное поле найдено в индексированных целыми числами полях данных (не защищено)
- строка
$stringKeyMessageдополнительный '' - Сообщение, если обнаружена подделка в полях данных, индексированных строками (защищено)
- строка
$missingMessageдополнительный '' - Сообщение, если поле отсутствует
Возвращает
массивСообщения
_debugExpectedFields()source protected
_debugExpectedFields( array $expectedFields = [] , string $missingMessage = '' )
Генерирует сообщение об ожидаемых полях для отладки
Параметры
- массив
$expectedFieldsдополнительный [] - Ожидаемые поля
- строка
$missingMessageдополнительный '' - Шаблон сообщения
Возвращает
строка|nullСообщение об ошибке, связанной с ожидаемыми полями
_debugPostTokenNotMatching()source protected
_debugPostTokenNotMatching( Cake\Controller\Controller $controller , array $hashParts )
Создать сообщение для пользователей, поясняющее, почему токен безопасности не совпадает
Параметры
-
Cake\Controller\Controller$controller - Экземпляр контроллера
- массив
$hashParts - Элементы, используемые для генерации хэша токена
Возвращает
строкаСообщение, объясняющее, почему токены не совпадают
_fieldsList()source protected
_fieldsList( array $check )
Возвратить список полей для вычисления хэша
Параметры
- массив
$check - Массив данных
Возвращает
массив_hashParts()source protected
_hashParts( Cake\Controller\Controller $controller )
Возвратить части хэша для генерации токена
Параметры
-
Cake\Controller\Controller$controller - Экземпляр контроллера
Возвращает
массив_matchExistingFields()source protected
_matchExistingFields( array $dataFields , array $expectedFields , string $intKeyMessage , string $stringKeyMessage )
Генерировать массив сообщений для существующих полей в данных POST, поля, совпадающие с dataFields в $expectedFields, будут удалены
Параметры
- массив
$dataFields - Массив полей, содержащий поля POST данных
- массив
$expectedFields - Массив полей, содержащих ожидаемые поля в POST
- строка
$intKeyMessage - Строка сообщения, если неожиданное найдено в полях данных с индексами целых чисел (не защищено)
- строка
$stringKeyMessage - Строка сообщения, если обнаружено вмешательство в поля данных с индексами строк (защищено)
Возвращает
массивСообщения об ошибках
_requireMethod()source protected
_requireMethod( string $method , array $actions = [] )
Устанавливает действия, требующие HTTP-запрос $method, или пусто для всех действий
Параметры
- строка
$method - HTTP-метод для назначения действий контроллера
- массив
$actionsoptional [] - Действия контроллера для установки требуемого HTTP-метода.
_secureRequired()source protected
_secureRequired( Cake\Controller\Controller $controller )
Проверить, требует ли доступ защищенное соединение
Параметры
-
Cake\Controller\Controller$controller - Экземпляр контроллера
Возвращает
булевоtrue, если требуется защищенное соединение
_sortedUnlocked()source protected
_sortedUnlocked( array $data )
Получить отсортированную строку разблокированных элементов
Параметры
- массив
$data - Массив данных
Возвращает
строка_throwException()source protected
_throwException( Cake\Controller\Exception\SecurityException|null $exception = null )
Проверить режим отладки и выбросить исключение на основе существующего
Параметры
-
Cake\Controller\Exception\SecurityException|null$exceptionoptional null - Дополнительная информация об отладке, описывающая причину
Выбрасывает
Cake\Http\Exception\BadRequestException_unlocked()source protected
_unlocked( array $data )
Получить строку разблокированных элементов
Параметры
- массив
$data - Массив данных
Возвращает
строка_validToken()source protected
_validToken( Cake\Controller\Controller $controller )
Проверить, является ли токен валидным
Параметры
-
Cake\Controller\Controller$controller - Экземпляр контроллера
Возвращает
строкатокен полей
Выбрасывает
Cake\Controller\Exception\SecurityException_validatePost()source protected
_validatePost( Cake\Controller\Controller $controller )
Проверить отправленную форму
Параметры
-
Cake\Controller\Controller$controller - Экземпляр контроллера
Возвращает
булевоtrue, если отправленная форма валидна
Выбрасывает
Cake\Controller\Exception\AuthSecurityExceptionblackHole()source public
blackHole( Cake\Controller\Controller $controller , string $error = '' , Cake\Controller\Exception\SecurityException $exception = null )
Отправить невалидный запрос в чёрный ящик с ошибкой 400 или пользовательской функцией обратного вызова. Если SecurityComponent::$blackHoleCallback указана, будет использоваться эта функция обратного вызова путём выполнения метода, указанного в $error
Параметры
-
Cake\Controller\Controller$controller - Экземпляр контроллера
- строка
$erroroptional '' - Метод ошибки
-
Cake\Controller\Exception\SecurityException$exceptionoptional null - Дополнительная информация об отладке, описывающая причину
Возвращает
смешанныйЕсли указано, ответ blackHoleCallback контроллера, в противном случае ничего не возвращается
Выбрасывает
Cake\Http\Exception\BadRequestExceptionСм.
\Cake\Controller\Component\SecurityComponent::$blackHoleCallbackСсылка
https://book.cakephp.org/3.0/en/controllers/components/security.html#handling-blackhole-callbacksgenerateToken()source public
generateToken( Cake\Http\ServerRequest $request )
Вручную добавить информацию о предотвращении подделки формы в предоставленный объект запроса.
Параметры
-
Cake\Http\ServerRequest$request - Объект запроса, который нужно добавить.
Возвращает
Cake\Http\ServerRequestИзменённый запрос.
implementedEvents()source public
implementedEvents( )
Поддерживаемые события данного компонента.
Возвращает
массивПереопределяет
Cake\Controller\Component::implementedEvents() requireAuth()source public deprecated
requireAuth( string|array $actions )
Устанавливает действия, требующие авторизации whitelisted form submissions.
Добавление действий с этим методом будет принудительно применять ограничения, заданные в SecurityComponent::$allowedControllers и SecurityComponent::$allowedActions.
Устарело
3.2.2 Эта функция запутывает и не полезна.Параметры
- строка|массив
$actions - Список действий
requireSecure()source public
requireSecure( string|array|null $actions = null )
Устанавливает действия, требующие SSL-защищенного запроса, или пусто для всех действий
Параметры
- строка|массив|null
$actionsoptional null - Список действий
startup()source public
startup( Cake\Event\Event $event )
Инициализация компонента. Здесь происходит вся проверка безопасности.
Параметры
-
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 - Имя компонента для получения.
Возвращает
смешанныйОбъект Component или null.
getController()source public
getController( )
Получить контроллер, к которому привязан этот компонент.
Возвращает
Cake\Controller\ControllerПривязанный контроллер.
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 - Значение для записи.
- boolean|строка
$mergeнеобязательный false True для рекурсивной склейки, 'shallow' для простой склейки, false для перезаписи, по умолчанию false.
Исключения
Cake\Core\Exception\Exceptionесли пытаетесь перезаписать существующую конфигурацию
config()source public deprecated
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']);
Устарело
3.4.0 использовать setConfig()/getConfig() вместо этого.Параметры
- строка|массив|null
$keyнеобязательный null - Ключ для получения/установки, или весь массив конфигураций.
- смешанный|null
$valueнеобязательный null - Значение для установки.
- boolean
$mergeнеобязательный true - Выполнять рекурсивную склейку или перезаписывать существующую конфигурацию, по умолчанию true.
Возвращает
смешанныйЗначение конфигурации, считанное, или сам объект при операциях записи.
Исключения
Cake\Core\Exception\ExceptionПри попытке установить недопустимый ключ.
configShallow()source public
configShallow( string|array $key , mixed|null $value = null )
Объединить предоставленную конфигурацию с существующей конфигурацией. В отличие от config(), которая выполняет рекурсивную склейку для вложенных ключей, этот метод выполняет простую склейку.
Установка определённого значения:
$this->configShallow('key', $value); Установка вложенного значения:
$this->configShallow('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->configShallow(['one' => 'value', 'another' => 'value']);
Параметры
- строка|массив
$key - Ключ для установки, или весь массив конфигураций.
- смешанный|null
$valueнеобязательный null - Значение для установки.
Возвращает
$this
getConfig()source public
getConfig( string|null $key = null , mixed $default = null )
Возвращает конфигурацию.
Использование
Чтение всей конфигурации:
$this->getConfig();
Чтение определённого значения:
$this->getConfig('key'); Чтение вложенного значения:
$this->getConfig('some.nested.key'); Чтение со значением по умолчанию:
$this->getConfig('some-key', 'default-value'); Параметры
- строка|null
$keyнеобязательный null - Ключ для получения или null для всей конфигурации.
- смешанный
$defaultнеобязательный null - Возвращаемое значение, когда ключ не существует.
Возвращает
смешанныйЗначение конфигурации, которое считывается.
setConfig()source public
setConfig( string|array $key , mixed|null $value = null , boolean $merge = true )
Устанавливает конфигурацию.
Использование
Установка определённого значения:
$this->setConfig('key', $value); Установка вложенного значения:
$this->setConfig('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->setConfig(['one' => 'value', 'another' => 'value']);
Параметры
- строка|массив
$key - Ключ для установки, или весь массив конфигураций.
- смешанный|null
$valueнеобязательный null - Значение для установки.
- boolean
$mergeнеобязательный true - Выполнять рекурсивную склейку или перезаписывать существующую конфигурацию, по умолчанию true.
Возвращает
$this
Исключения
Cake\Core\Exception\ExceptionПри попытке установить недопустимый ключ.
Методы, используемые из 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Успех записи в журнал.
Подробное описание свойств
END_OF_DOCUMENT_MARKER$_defaultConfigsource
protected array
Конфигурация по умолчанию
-
blackHoleCallback- Метод контроллера, который будет вызван, если запрос будет заблокирован. -
requireSecure- Список действий, требующих защищённого SSL-соединения. -
requireAuth- Список действий, требующих валидного ключа аутентификации. Устарело начиная с версии 3.2.2 -
allowedControllers- Контроллеры, действия которых текущий контроллер разрешено получать. -
allowedActions- Действия, действия которых текущий контроллер разрешено получать. -
unlockedFields- Поля формы, которые следует исключить из валидации POST. Поля можно разблокировать в компоненте или с помощью FormHelper::unlockField(). Разблокированные поля не обязательны в POST и скрытые разблокированные поля не проверяют свои значения. -
unlockedActions- Действия, которые следует исключить из проверок валидации POST. Другие проверки, такие как requireAuth(), requireSecure() и т.д., всё равно будут применяться. -
validatePost- Нужно ли проверять данные POST. Установите в значение false, чтобы отключить для данных, поступающих от сторонних сервисов и т.д.
[
'blackHoleCallback' => null,
'requireSecure' => [],
'requireAuth' => [],
'allowedControllers' => [],
'allowedActions' => [],
'unlockedFields' => [],
'unlockedActions' => [],
'validatePost' => true
]
© 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.Controller.Component.SecurityComponent.html