Класс SecurityComponent
Компонент Security обеспечивает удобный способ интеграции более строгих мер безопасности в ваше приложение. Он предоставляет методы для различных задач, таких как:
- Ограничение HTTP-методов, принимаемых вашим приложением.
- Защита от подмены данных форм
- Требование использования SSL.
- Ограничение межконтроллерной коммуникации.
- Cake\Controller\Component implements Cake\Event\EventListenerInterface uses Cake\Core\InstanceConfigTrait , Cake\Log\LogTrait
-
Cake\Controller\Component\SecurityComponent
Ссылка: https://book.cakephp.org/3.0/en/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, поля, совпадающие с полями в $expectedFields, будут удалены
- _requireMethod() protectedУстанавливает действия, требующие HTTP-запрос $method, или пусто для всех действий
- _secureRequired() protectedПроверка, требует ли доступ защищённое соединение
- _sortedUnlocked() protectedПолучить отсортированную строку unlocked
- _throwException() protectedПроверить статус отладки и выбросить исключение на основе существующего
- _unlocked() protectedПолучить строку unlocked
- _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 )
Проверка необходимости аутентификации
Устаревшее
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необязательно [] - Параметры для передачи методу
Возвращает
mixedОтвет метода обратного вызова контроллера
Выбрасывает
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, поля данных в $expectedFields будут удалены
Параметры
- массив
$dataFields - Массив полей, содержащий поля данных POST
- массив
$expectedFields - Массив полей, содержащий ожидаемые поля в POST
- строка
$intKeyMessage - Строка сообщения, если неожиданные данные обнаружены в индексированных полей данных целыми числами (не защищенными)
- строка
$stringKeyMessage - Строка сообщения, если обнаружено вмешательство в поля данных, индексированные строками (защищенные)
Возвращает
массивСообщения об ошибках
_requireMethod()source protected
_requireMethod( string $method , array $actions = [] )
Устанавливает действия, которые требуют HTTP-запрос $method, или пустой для всех действий
Параметры
- строка
$method - HTTP-метод для назначения действий контроллера
- массив
$actionsнеобязательно [] - Действия контроллера для установки требуемого 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$exceptionнеобязательно 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 - Экземпляр контроллера
- строка
$errorнеобязательно '' - Метод ошибки
-
Cake\Controller\Exception\SecurityException$exceptionнеобязательно null - Дополнительная информация об отладке, описывающая причину
Возвращает
смешанноеЕсли указан, ответ обратного вызова blackHoleCallback контроллера, в противном случае - нет возвращаемого значения
Выбрасывает
Cake\Http\Exception\BadRequestExceptionСм. также
\Cake\Controller\Component\SecurityComponent::$blackHoleCallbackСсылка
https://book.cakephp.org/3.0/ru/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 )
Устанавливает действия, которые требуют отфильтрованных данных формы.
Добавление действий с помощью этого метода будет применять ограничения, установленные в SecurityComponent::$allowedControllers и SecurityComponent::$allowedActions.
Устарело
3.2.2 Эта функция запутанна и бесполезна.Параметры
- строка|массив
$actions - Список действий
requireSecure()source public
requireSecure( string|array|null $actions = null )
Устанавливает действия, которые требуют запроса с защищённым SSL-соединением, или пустой для всех действий
Параметры
- строка|массив|null
$actionsнеобязательно 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Успешность записи в журнал.
Подробное описание свойств
$_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.6/class-Cake.Controller.Component.SecurityComponent.html