Класс SecurityComponent
Компонент Security позволяет легко интегрировать более надежную систему безопасности в ваше приложение. Он предоставляет методы для различных задач, таких как:
- Ограничение HTTP-методов, принимаемых приложением.
- Защита от подмены данных форм.
- Требование использования SSL.
- Ограничение межконтроллерной связи.
- Cake\Controller\Component implements Cake\Event\EventListenerInterface uses Cake\Core\InstanceConfigTrait , Cake\Log\LogTrait
-
Cake\Controller\Component\SecurityComponent
Ссылка: http://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 - Объект запроса
$requestpublic - Объект сессии
$sessionpublic
Унаследованные свойства
Краткое описание методов
- _authRequired() protectedПроверка необходимости аутентификации
- _callback() protectedВызов метода обратного вызова контроллера
- _debugCheckFields() protectedПроверяет данные на соответствие ожидаемым значениям
- _debugExpectedFields() protectedГенерирует сообщение об ожидаемых полях для отладки
- _debugPostTokenNotMatching() protectedСоздаёт сообщение для пользователя, объясняющее, почему токен не совпадает
- _fieldsList() protectedВозвращает список полей для расчёта хэша
- _hashParts() protectedВозвращает части хэша для генерации токена
- _matchExistingFields() protected
Генерирует массив сообщений для существующих полей в данных POST. Поля, соответствующие полям в $expectedFields, будут удалены.
- _requireMethod() protectedУстанавливает действия, требующие HTTP-запрос с указанным методом, или пусто для всех действий
- _secureRequired() protectedПроверяет, требует ли доступ защищённое соединение
- _sortedUnlocked() protectedВозвращает отсортированную строку разблокированных значений
- _throwException() protectedПроверяет статус отладки и выбрасывает исключение, основываясь на существующем
- _unlocked() protectedВозвращает строку разблокированных значений
- _validToken() protectedПроверяет, является ли токен валидным
- _validatePost() protectedВалидирует отправленную форму
- blackHole() public
Отклоняет невалидный запрос с ошибкой 400 или с помощью пользовательского обратного вызова. Если задан SecurityComponent::$blackHoleCallback, будет использован этот callback, выполняя метод, указанный в $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 - Экземпляр контроллера
- string
$method - Метод для выполнения
- array
$paramsoptional [] - Параметры для отправки методу
Возвращает
mixedОтвет метода обратного вызова контроллера
Исключения
Cake\Network\Exception\BadRequestExceptionКогда blackholeCallback недоступен.
_debugCheckFields()source protected
_debugCheckFields( array $dataFields , array $expectedFields [] , string $intKeyMessage '' , string $stringKeyMessage '' , string $missingMessage '' )
Проверяет данные на соответствие ожидаемым значениям
Параметры
- array
$dataFields - Массив полей, содержащий данные POST
- array
$expectedFieldsoptional [] - Массив полей, содержащих ожидаемые поля в POST
- string
$intKeyMessageoptional '' - Строка сообщения при обнаружении неожиданных полей в данных POST с индексами типа int (не защищённые)
- string
$stringKeyMessageoptional '' - Строка сообщения при обнаружении подмены данных POST с индексами типа string (защищённые)
- string
$missingMessageoptional '' - Строка сообщения при отсутствии поля
Возвращает
arrayСообщения
_debugExpectedFields()source protected
_debugExpectedFields( array $expectedFields [] , string $missingMessage '' )
Генерирует сообщение об ожидаемых полях для отладки
Параметры
- array
$expectedFieldsoptional [] - Ожидаемые поля
- string
$missingMessageoptional '' - Шаблон сообщения
Возвращает
stringСообщение об ошибке, касающееся ожидаемых полей
_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 - Строка сообщения, если в полях данных обнаружены неожиданные значения с индексом типа int (не защищены)
- строка
$stringKeyMessage - Строка сообщения, если в полях данных обнаружены изменённые значения с индексом типа string (защищены)
Возвращает
массивСообщения об ошибках
_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 $exception null )
Проверка состояния отладки и выброс исключения на основе существующего
Параметры
-
Cake\Controller\Exception\SecurityException$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Ссылка
http://book.cakephp.org/3.0/ru/controllers/components/security.html#handling-blackhole-callbacksgenerateToken()source public
generateToken( Cake\Network\Request $request )
Вручную добавляет в предоставленный объект запроса информацию о предотвращении подделки форм.
Параметры
-
Cake\Network\Request$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.
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
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']);
Параметры
- строка|массив|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->config('key', $value); Установка вложенного значения:
$this->config('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->config(['one' => 'value', 'another' => 'value']);
Параметры
- строка|массив
$key - Ключ для установки или полный массив конфигураций.
- смешанный тип|null
$valueнеобязательно null - Значение для установки.
Возвращает
$this Сам объект.
Методы, используемые из 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 массив
Значения по умолчанию
-
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–2016 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.
http://api.cakephp.org/3.2/class-Cake.Controller.Component.SecurityComponent.html