Класс SecurityComponent
Компонент Security позволяет легко интегрировать более строгую безопасность в ваше приложение. Он предоставляет методы для различных задач, таких как:
- Ограничение 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
Краткое описание констант
-
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, поля, совпадающие с dataFields в $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Поддерживаемые этим компонентом события.
- 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опционально '' - Строка сообщения, если в данных полей обнаружено неожиданное поле, индексированное целым числом (не защищено)
- строка
$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 [] )
Устанавливает действия, которые требуют запроса $method HTTP, или пустое значение для всех действий
Параметры
- строка
$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 - Имя компонента для получения.
Возвращает
смешанноеОбъект компонента или 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 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']);
Устарело
3.4.0 Используйте setConfig()/getConfig() вместо этого.Параметры
- строка|массив|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->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 - Выполнять рекурсивное слияние или перезапись существующей конфигурации, по умолчанию 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необязательно [] - Дополнительные данные журнала, относящиеся к этому сообщению.
Возвращает
булевоУспех записи в журнал.
Подробное описание свойств
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–2018 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.5/class-Cake.Controller.Component.SecurityComponent.html