Класс 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
Краткое описание констант
-
string'The request has been black-holed'
Краткое описание свойств
-
$_actionprotectedТекущее действие контроллераstring -
$_defaultConfigprotectedЗначения конфигурации по умолчаниюarray - Объект сессии
$sessionpublic
Унаследованные свойства
Краткое описание методов
- _authRequired() protectedПроверка необходимости аутентификации
- _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Поддерживаемые события этого компонента.
- requireAuth() publicУстанавливает действия, требующие вхождения в список разрешённых данных формы.
- requireSecure() publicУстанавливает действия, требующие запроса с SSL-защитой, или пустое значение для всех действий
- startup() publicИнициализация компонента. Все проверки безопасности происходят здесь.
Подробное описание методов
_authRequired()source protected
_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необязательно [] - Параметры для отправки методу
Возвращаемое значение
смешанноеОтвет метода обратного вызова контроллера
Исключения
Cake\Network\Exception\BadRequestExceptionКогда blackholeCallback не является вызываемым.
_debugCheckFields()source protected
_debugCheckFields( array $dataFields , array $expectedFields [] , string $intKeyMessage '' , string $stringKeyMessage '' , string $missingMessage '' )
Проверка массива данных на соответствие ожидаемым полям
Параметры
- массив
$dataFields - Массив полей, содержащий данные POST
- массив
$expectedFieldsнеобязательно [] - Массив полей, содержащий ожидаемые поля в POST
- строка
$intKeyMessageнеобязательно '' - Строка сообщения, если в массиве данных обнаружены неожиданные поля с индексом типа int (не защищённые)
- строка
$stringKeyMessageнеобязательно '' - Строка сообщения, если в массиве данных обнаружены неожиданные поля с индексом типа string (защищённые)
- строка
$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 - Строка сообщения, если неожиданное найдено в полях данных, индексированных по int (не защищенные)
- строка
$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\Network\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\Network\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 - Объект запроса, в который необходимо добавить.
Возвращаемое значение
логическое значениеimplementedEvents()source public
implementedEvents( )
Поддерживаемые этим компонентом события.
Возвращаемое значение
массивПереопределяет
Cake\Controller\Component::implementedEvents() requireAuth()source public
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 - Значение для записи.
- булево|строка
$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']);
Устаревшее
3.4.0 используйте setConfig()/getConfig() вместо этого.Параметры
- строка|массив|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->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 - Значение для установки.
- булево
$mergeнеобязательно 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необязательно [] - Дополнительные данные журнала, относящиеся к этому сообщению.
Возвращает
булевоУспешность записи в журнал.
Подробности свойств
$_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–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.4/class-Cake.Controller.Component.SecurityComponent.html