Класс 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/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, поля, соответствующие полям в $expectedFields, будут удалены
- _requireMethod() protectedУстанавливает действия, требующие HTTP-запрос с методом $method, или пустое значение для всех действий
- _secureRequired() protectedПроверка необходимости безопасного подключения
- _sortedUnlocked() protectedПолучить отсортированный неблокированный строку
- _throwException() protectedПроверка состояния отладки и выброс исключения на основе существующего
- _unlocked() protectedПолучить неблокированную строку
- _validToken() protectedПроверка валидности токена
- _validatePost() protectedПроверка данных формы
- blackHole() public
Блокирует недействительный запрос с ошибкой 400 или с помощью пользовательского обратного вызова. Если указан SecurityComponent::$blackHoleCallback, будет использован этот обратный вызов, выполняя метод, указанный в $error
- generateToken() public
Добавление информации о предотвращении подмены данных формы в указанный объект запроса.
- implementedEvents() publicПоддерживаемые события этого компонента.
- Устанавливает действия, требующие отчищенных данных формы.
- requireSecure() publicУстанавливает действия, требующие зашифрованного запроса, или пустое значение для всех действий
- startup() publicИнициализация компонента. Здесь происходит вся проверка безопасности.
Подробное описание методов
_authRequired()исходный код protected устарело
_authRequired( Cake\Controller\Controller $controller )
Проверка необходимости авторизации
Устарело
3.2.2 Эта функция запутанная и бесполезная.Параметры
-
Cake\Controller\Controller$controller - Экземпляр контроллера
Возвращает
booleantrue, если авторизация необходима
_callback()исходный код protected
_callback( Cake\Controller\Controller $controller , string $method , array $params = [] )
Вызов метода обратного вызова контроллера
Параметры
-
Cake\Controller\Controller$controller - Экземпляр контроллера
- строка
$method - Метод для выполнения
- массив
$paramsнеобязательно [] - Параметры для передачи методу
Возвращает
mixedОтвет метода обратного вызова контроллера
Выбрасывает
Cake\Http\Exception\BadRequestExceptionЕсли blackholeCallback не является вызываемым.
_debugCheckFields()исходный код protected
_debugCheckFields( array $dataFields , array $expectedFields = [] , string $intKeyMessage = '' , string $stringKeyMessage = '' , string $missingMessage = '' )
Проверка массива данных на соответствие ожидаемому
Параметры
- массив
$dataFields - Массив полей, содержащий поля POST-данных
- массив
$expectedFieldsнеобязательно [] - Массив полей, содержащий ожидаемые поля в POST
- строка
$intKeyMessageнеобязательно '' - Строка сообщения, если в данных полей найдены неожиданные значения, индексированные целыми числами (не защищены)
- строка
$stringKeyMessageнеобязательно '' - Строка сообщения, если обнаружена подмена данных в полях данных, индексированных строками (защищены)
- строка
$missingMessageнеобязательно '' - Строка сообщения, если поле отсутствует
Возвращает
массивСообщения
_debugExpectedFields()исходный код 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/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
$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 - Регистр компонентов, который этот компонент может использовать для ленивой загрузки своих компонентов
- array
$configoptional [] - Массив параметров настройки.
__debugInfo()source public
__debugInfo( )
Возвращает массив, который можно использовать для описания внутреннего состояния этого объекта.
Возвращаемое значение
array__get()source public
__get( string $name )
Магический метод для ленивой загрузки $components.
Параметры
- string
$name - Имя компонента для получения.
Возвращаемое значение
mixedОбъект компонента или null.
getController()source public
getController( )
Получить контроллер, к которому привязан этот компонент.
Возвращаемое значение
Cake\Controller\ControllerПривязанный контроллер.
initialize()source public
initialize( array $config )
Метод-обработчик конструктора.
Реализуйте этот метод, чтобы избежать необходимости переопределять конструктор и вызывать родительский.
Параметры
- array
$config - Настройки конфигурации, предоставленные этому компоненту.
Методы, используемые из Cake\Core\InstanceConfigTrait
_configDelete()source protected
_configDelete( string $key )
Удаляет один ключ конфигурации.
Параметры
- string
$key - Ключ для удаления.
Исключения
Cake\Core\Exception\Exceptionпри попытке перезаписать существующую конфигурацию
_configRead()source protected
_configRead( string|null $key )
Читает ключ конфигурации.
Параметры
- string|null
$key - Ключ для чтения.
Возвращаемое значение
mixed_configWrite()source protected
_configWrite( string|array $key , mixed $value , boolean|string $merge = false )
Записывает ключ конфигурации.
Параметры
- string|array
$key - Ключ для записи.
- mixed
$value - Значение для записи.
- boolean|string
$mergeoptional false Истинно для рекурсивного слияния, 'shallow' для простого слияния, ложно для перезаписи, по умолчанию ложно.
Исключения
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() вместо этого.Параметры
- string|array|null
$keyoptional null - Ключ для получения/установки или полный массив конфигураций.
- mixed|null
$valueoptional null - Значение для установки.
- boolean
$mergeoptional true - Выполнять ли рекурсивное слияние или перезапись существующей конфигурации, по умолчанию истинно.
Возвращаемое значение
mixedЗначение конфигурации, которое читается, или сам объект при операциях записи.
Исключения
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']);
Параметры
- string|array
$key - Ключ для установки или полный массив конфигураций.
- mixed|null
$valueoptional 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'); Параметры
- string|null
$keyoptional null - Ключ для получения или null для всей конфигурации.
- mixed
$defaultoptional null - Возвращаемое значение, когда ключ не существует.
Возвращаемое значение
mixedДанные конфигурации по указанному ключу или 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']);
Параметры
- string|array
$key - Ключ для установки или полный массив конфигураций.
- mixed|null
$valueoptional null - Значение для установки.
- boolean
$mergeoptional 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() для получения дополнительной информации о записи в журналы.
Параметры
- mixed
$msg - Сообщение журнала.
- integer|string
$leveloptional LogLevel::ERROR - Уровень ошибки.
- string|array
$contextoptional [] - Дополнительные данные журнала, относящиеся к этому сообщению.
Возвращаемое значение
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.8/class-Cake.Controller.Component.SecurityComponent.html