Класс SecurityComponent
Компонент Security обеспечивает лёгкий способ интеграции более жёсткой защиты в ваше приложение. Он предоставляет методы для различных задач, таких как:
- Ограничение HTTP-методов, принимаемых вашим приложением.
- Защита от CSRF.
- Защита от подделки форм
- Требование использования SSL.
- Ограничение межконтроллерной коммуникации.
- CakeObject
-
Component -
SecurityComponent
Ссылка: http://book.cakephp.org/2.0/ru/core-libraries/components/security-component.html
Авторские права: Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
Лицензия: MIT License
Расположение: Cake/Controller/Component/SecurityComponent.php
Краткое описание свойств
-
$_actionprotectedТекущее действие контроллераstring -
$allowedActionspublicarrayДействия, из которых действия текущего контроллера разрешены для получения запросов.
-
$allowedControllerspublicarrayКонтроллеры, из которых действия текущего контроллера разрешены для получения запросов.
-
$blackHoleCallbackpublicМетод контроллера, который будет вызван, если этот запрос будет проигнорированstring -
$componentspublicДругие компоненты, используемые компонентом Securityarray -
$csrfCheckpublicИспользовать формы с защитой от CSRF. Установите в false, чтобы отключить защиту от CSRF для форм.boolean -
$csrfExpirespublicstringСрок действия токена CSRF после его создания. Каждый запрос формы/страницы генерирует новый токен, который может быть отправлен только один раз, пока не истечёт. Может принимать любые значения, совместимые с strtotime()
-
$csrfLimitpublicintegerУправление количеством токенов, которые может хранить пользователь. Это наиболее полезно с одноразовыми токенами. Поскольку новые токены создаются при каждом запросе, жёсткое ограничение на количество открытых токенов может быть полезно для управления размером файла сессии.
-
$csrfUseOncepublicbooleanОпределяет, использовать ли токены CSRF одноразового использования. Установите в false, чтобы не генерировать новые токены при каждом запросе. Один токен будет повторно использован до истечения срока его действия. Это уменьшает вероятность получения пользователями неверных запросов из-за использования токенов. Это имеет побочный эффект, делающий CSRF менее безопасным, так как токены могут быть повторно использованы.
-
$disabledFieldspublicУстаревшее свойство, заменено свойством unlockedFields.array - Объект запроса
$requestpublic -
$requireAuthpublicСписок действий, требующих действительного ключа аутентификацииarray -
$requireDeletepublicСписок действий контроллера, для которых требуется запрос DELETEarray -
$requireGetpublicСписок действий контроллера, для которых требуется запрос GETarray -
$requirePostpublicСписок действий контроллера, для которых требуется запрос POSTarray -
$requirePutpublicСписок действий контроллера, для которых требуется запрос PUTarray -
$requireSecurepublicСписок действий, требующих защищённого SSL-соединенияarray -
$unlockedActionspublicarrayДействия, которые следует исключить из проверок CSRF и POST. Другие проверки, такие как requireAuth(), requireSecure(), requirePost(), requireGet() и т. д., всё равно будут применяться.
-
$unlockedFieldspublicarrayПоля форм, которые следует исключить из проверок POST. Поля можно разблокировать как в компоненте, так и с помощью FormHelper::unlockField(). Поля, которые были разблокированы, не обязательно должны быть частью POST, и значения скрытых разблокированных полей не проверяются.
-
$validatePostpublicbooleanТребуется ли проверка данных POST. Установите в false, чтобы отключить для данных, поступающих от сторонних служб и т. д.
Унаследованные свойства
Краткое описание методов
- _authRequired() protectedПроверка необходимости аутентификации
- _callback() protectedВызов метода обратного вызова контроллера
- _expireTokens() protected
Истечение срока действия CSRF-носов и удаление их из действительных токенов. Используется простой таймаут для истечения срока действия токенов.
- _methodsRequired() protectedПроверка необходимости HTTP-методов
- _requireMethod() protectedУстанавливает действия, требующие HTTP-запрос $method, или пустое значение для всех действий
- _secureRequired() protectedПроверка необходимости доступа через защищённое соединение
- _validateCsrf() protected
Проверка наличия в данных POST токена CSRF контроллера и его действительности/не истечения срока действия. Если токен действителен, он будет удалён из списка действительных токенов.
- _validatePost() protectedПроверка отправленной формы
- blackHole() public
Проигнорировать недействительный запрос с ошибкой 400 или пользовательским обратным вызовом. Если SecurityComponent::$blackHoleCallback задано, он будет использовать этот обратный вызов, выполнив метод, указанный в $error
- generateToken() publicДобавление информации о токенах CSRF в предоставленный объект запроса вручную.
- requireAuth() publicУстанавливает действия, требующие авторизации.
- requireDelete() publicУстанавливает действия, требующие запрос DELETE, или пустое значение для всех действий
- requireGet() publicУстанавливает действия, требующие запрос GET, или пустое значение для всех действий
- requirePost() publicУстанавливает действия, требующие запрос POST, или пустое значение для всех действий
- requirePut() publicУстанавливает действия, требующие запрос PUT, или пустое значение для всех действий
- requireSecure() publicУстанавливает действия, требующие запрос с SSL-защитой, или пустое значение для всех действий
- startup() publicИнициализация компонента. Здесь происходит вся проверка безопасности.
Подробное описание методов
_authRequired()source protected
_authRequired( Controller $controller )
Проверка необходимости аутентификации
Устарело
2.8.1 Эта функция запутывает и не имеет пользы.Параметры
-
Controller$controller - Экземпляр контроллера
Возвращает
boolean|nullTrue, если аутентификация требуется
_callback()source protected
_callback( Controller $controller , string $method , array $params array() )
Вызывает метод обратного вызова контроллера
Параметры
-
Controller$controller - Контроллер, для которого выполняется обратный вызов
- строка
$method - Метод для выполнения
- массив
$paramsнеобязательно array() - Параметры, которые будут переданы методу
Возвращает
mixedОтвет метода обратного вызова контроллера
Исключения
BadRequestExceptionЕсли метод blackholeCallback недоступен.
_expireTokens()source protected
_expireTokens( array $tokens )
Истекают срок действия CSRF-токенов и удаляют их из допустимых токенов. Использует простой таймаут для истечения срока действия токенов.
Параметры
- массив
$tokens - Массив nonce => срок действия.
Возвращает
arrayМассив nonce => срок действия.
_methodsRequired()source protected
_methodsRequired( Controller $controller )
Проверка, требуются ли HTTP-методы
Параметры
-
Controller$controller - Инициализируемый контроллер
Возвращает
booleanTrue, если метод $method требуется
_requireMethod()source protected
_requireMethod( string $method , array $actions array() )
Устанавливает действия, которые требуют HTTP-запрос $method, или пустой массив для всех действий
Параметры
- строка
$method - HTTP-метод, которому нужно назначить действия контроллера
- массив
$actionsнеобязательно array() - Действия контроллера, для которых нужно установить необходимый HTTP-метод.
_secureRequired()source protected
_secureRequired( Controller $controller )
Проверка, требуется ли безопасное соединение
Параметры
-
Controller$controller - Инициализируемый контроллер
Возвращает
booleanTrue, если требуется безопасное соединение
_validateCsrf()source protected
_validateCsrf( Controller $controller )
Проверка, что контроллер имеет CSRF-токен в данных POST и что токен действителен/не истек. Если токен действителен, он будет удален из списка действительных токенов.
Параметры
-
Controller$controller - Контроллер для проверки
Возвращает
booleanДействительный CSRF-токен.
_validatePost()source protected
_validatePost( Controller $controller )
Проверка отправленной формы
Параметры
-
Controller$controller - Инициализируемый контроллер
Возвращает
booleanTrue, если отправленная форма действительна
blackHole()source public
blackHole( Controller $controller , string $error '' )
Блокирует недопустимый запрос с ошибкой 400 или пользовательским обратным вызовом. Если в SecurityComponent::$blackHoleCallback указан обратный вызов, он будет использован, выполнив метод, указанный в $error
Параметры
-
Controller$controller - Инициализируемый контроллер
- строка
$errorнеобязательно '' - Метод ошибки
Возвращает
mixedЕсли указано, ответ метода blackHoleCallback контроллера, иначе ничего не возвращает
Исключения
BadRequestExceptionСм. также
SecurityComponent::$blackHoleCallbackСсылка
http://book.cakephp.org/2.0/ru/core-libraries/components/security-component.html#handling-blackhole-callbacksgenerateToken()source public
generateToken( CakeRequest $request )
Вручную добавляет информацию о CSRF-токене в предоставленный объект запроса.
Параметры
-
CakeRequest$request - Объект запроса, в который нужно добавить информацию.
Возвращает
booleanrequireAuth()source public
requireAuth( )
Устанавливает действия, которые требуют предоставленных в форме данных.
Добавление действий с этим методом обеспечит соблюдение ограничений, установленных в SecurityComponent::$allowedControllers и SecurityComponent::$allowedActions.
Ссылка
http://book.cakephp.org/2.0/ru/core-libraries/components/security-component.html#SecurityComponent::requireAuthrequireDelete()source public
requireDelete( )
Устанавливает действия, которые требуют DELETE-запрос, или пустой массив для всех действий
Устаревшее
3.0.0 Используйте CakeRequest::onlyAllow() вместо этого.requireGet()source public
requireGet( )
Устанавливает действия, которые требуют GET-запрос, или пустой массив для всех действий
Устаревшее
3.0.0 Используйте CakeRequest::onlyAllow() вместо этого.requirePost()source public
requirePost( )
Устанавливает действия, которые требуют POST-запрос, или пустой массив для всех действий
Устаревшее
3.0.0 Используйте CakeRequest::onlyAllow() вместо этого.Ссылка
http://book.cakephp.org/2.0/ru/core-libraries/components/security-component.html#SecurityComponent::requirePostrequirePut()source public
requirePut( )
Устанавливает действия, которые требуют PUT-запрос, или пустой массив для всех действий
Устаревшее
3.0.0 Используйте CakeRequest::onlyAllow() вместо этого.requireSecure()source public
requireSecure( )
Устанавливает действия, которые требуют защищенного (SSL) запроса, или пустой массив для всех действий
Ссылка
http://book.cakephp.org/2.0/ru/core-libraries/components/security-component.html#SecurityComponent::requireSecurestartup()source public
startup( Controller $controller )
Инициализация компонента. Здесь происходит вся проверка безопасности.
Параметры
-
Controller$controller - Инициализируемый контроллер
Переопределяет
Component::startup() Наследованные методы из Component
__construct()source public
__construct( ComponentCollection $collection , array $settings array() )
Конструктор
Параметры
-
ComponentCollection$collection - Коллекция компонентов, которую может использовать этот компонент для ленивой загрузки своих компонентов
- массив
$settingsнеобязательно array() - Массив настроек конфигурации.
Переопределяет
CakeObject::__construct() __get()source public
__get( string $name )
Магический метод для ленивой загрузки $components.
Параметры
- строка
$name - Имя компонента, который нужно получить.
Возвращает
mixedОбъект Component или null.
beforeRedirect()source public
beforeRedirect( Controller $controller , string|array $url , integer $status null , boolean $exit true )
Вызывается перед Controller::redirect(). Позволяет заменить URL, на который будет перенаправление, на новый URL. Возвращаемое значение этого метода может быть массивом или строкой.
Если возвращаемое значение является массивом и содержит ключ 'url'. Вы также можете указать следующее:
-
statusКод состояния перенаправления -
exitНужно ли завершить скрипт после перенаправления.
Если ваш ответ — строка или массив, не содержащий ключа 'url', он будет использован в качестве нового URL для перенаправления.
Параметры
-
Controller$controller - Контроллер с компонентами для beforeRedirect
- строка|массив
$url - Строка или массив URL, на который происходит перенаправление.
- целое число
$statusнеобязательно null - Код состояния перенаправления
- булево
$exitнеобязательно true - Завершить скрипт после перенаправления.
Возвращаемое значение
массив|nullЛибо массив, либо null.
Ссылка
http://book.cakephp.org/2.0/ru/controllers/components.html#Component::beforeRedirectbeforeRender()source public
beforeRender( Controller $controller )
Вызывается перед Controller::beforeRender(), перед загрузкой класса представления и перед Controller::render()
Параметры
-
Controller$controller - Контроллер с компонентами для beforeRender
Ссылка
http://book.cakephp.org/2.0/ru/controllers/components.html#Component::beforeRenderinitialize()source public
initialize( Controller $controller )
Вызывается перед Controller::beforeFilter().
Параметры
-
Controller$controller - Контроллер с компонентами для инициализации
Ссылка
http://book.cakephp.org/2.0/ru/controllers/components.html#Component::initializeshutdown()source public
shutdown( Controller $controller )
Вызывается после Controller::render() и перед выводом на браузер.
Параметры
-
Controller$controller - Контроллер с компонентами для завершения работы
Ссылка
http://book.cakephp.org/2.0/ru/controllers/components.html#Component::shutdownМетоды, унаследованные от CakeObject
_mergeVars()source protected
_mergeVars( array $properties , string $class , boolean $normalize true )
Объединяет свойства объекта с свойствами в определении $class. Значение свойств этого класса будет объединено поверх свойств $class.
Это обеспечивает некоторую DRY-магию, предоставляемую CakePHP. Если вы хотите отключить её, переопределите этот метод как пустую функцию.
Параметры
- массив
$properties - Название свойств для объединения.
- строка
$class - Класс для объединения свойств.
- булево
$normalizeнеобязательно true - Установите в true, чтобы запустить свойства через Hash::normalize() перед объединением.
_set()source protected
_set( array $properties array() )
Позволяет установить несколько свойств объекта в одной строке кода. Будут установлены только свойства, которые являются частью объявления класса.
Параметры
- массив
$propertiesнеобязательно array() - Ассоциативный массив, содержащий свойства и соответствующие значения.
_stop()source protected
_stop( integer|string $status 0 )
Остановить выполнение текущего скрипта. Оборачивает exit(), что упрощает тестирование.
Параметры
- целое число|строка
$statusнеобязательно 0 - см. http://php.net/exit для значений
dispatchMethod()source public
dispatchMethod( string $method , array $params array() )
Вызывает метод этого объекта с заданными параметрами. Предоставляет объектно-ориентированную обертку для call_user_func_array
Параметры
- строка
$method - Имя метода для вызова
- массив
$paramsнеобязательно array() - Список параметров для использования при вызове $method
Возвращаемое значение
смешанныйВозвращает результат вызова метода
log()source public
log( string $msg , integer $type LOG_ERR , null|string|array $scope null )
Удобный метод для записи сообщения в CakeLog. Смотрите CakeLog::write() для получения дополнительной информации о записи в журналы.
Параметры
- строка
$msg - Сообщение журнала
- целое число
$typeнеобязательно LOG_ERR - Константа типа ошибки. Определена в app/Config/core.php.
- null|строка|массив
$scopeнеобязательно null Область(и), в которой создается сообщение журнала. Смотрите CakeLog::config() для получения дополнительной информации о журналах.
Возвращаемое значение
булевоУспешность записи в журнал
requestAction()source public
requestAction( string|array $url , array $extra array() )
Вызывает метод контроллера из любого места. Может использоваться для соединения контроллеров или связывания плагинов с основным приложением. requestAction может использоваться для возврата отображенных представлений или извлечения возвращаемого значения из действий контроллера.
Под капотом этот метод использует Router::reverse() для преобразования параметра $url в строковый URL. Вы должны использовать форматы URL, совместимые с Router::reverse()
Передача данных POST и GET
Данные POST и GET могут быть смоделированы в requestAction. Используйте $extra['url'] для данных GET. Параметр $extra['data'] позволяет моделировать данные POST.
Параметры
- строка|массив
$url Строковый или массивный URL. В отличие от других массивов URL в CakePHP, этот URL не будет автоматически обрабатывать переданные и именованные аргументы в параметре $url.
- массив
$extraнеобязательно array() Если массив включает ключ "return", устанавливает AutoRender в true. Также может использоваться для отправки данных GET/POST и именованных/переданных аргументов.
Возвращаемое значение
смешанныйБулево true или false при успехе/неуспехе, или содержимое отображенного действия, если в $extra установлен ключ 'return'.
toString()source public
toString( )
Преобразование CakeObject в строку. Каждый класс может переопределить этот метод по необходимости.
Возвращаемое значение
строкаИмя этого класса
Подробное описание свойств
$allowedActionssource
public массив
Действия, из которых действия текущего контроллера разрешено принимать запросы.
См. также
SecurityComponent::requireAuth()array()
$allowedControllerssource
public массив
Контроллеры, из которых действия текущего контроллера разрешено принимать запросы.
См. также
SecurityComponent::requireAuth()array()
$blackHoleCallbacksource
public string
Метод контроллера, который будет вызван, если этот запрос будет помечен как «чёрная дыра»
null
$componentssource
public array
Другие компоненты, используемые компонентом Security
array('Session') $csrfChecksource
public boolean
Использовать формы с защитой CSRF. Установите значение false, чтобы отключить защиту CSRF для форм.
См. также
http://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)SecurityComponent::$csrfExpires
true
$csrfExpiressource
public string
Срок действия маркера CSRF от момента его создания. Каждый запрос формы/страницы генерирует новый маркер, который может быть отправлен только один раз, если он не истек. Может принимать любое значение, совместимое с strtotime()
'+30 minutes'
$csrfLimitsource
public integer
Управление количеством открытых маркеров пользователя. Это особенно полезно для одноразовых маркеров. Поскольку новые маркеры создаются при каждом запросе, жёсткое ограничение на количество открытых маркеров может быть полезно для контроля размера файла сеанса.
При удалении маркеров сначала удаляются самые старые, так как они с большей вероятностью являются недействительными/просроченными.
100
$csrfUseOncesource
public boolean
Определяет, используется ли маркер CSRF «использовать и сжечь». Установите значение false, чтобы не генерировать новые маркеры при каждом запросе. Один маркер будет повторно использоваться до истечения срока действия. Это снижает вероятность получения пользователями недействительных запросов из-за использования маркера. Но это снижает безопасность CSRF, поскольку маркеры можно использовать повторно.
true
$disabledFieldssource
public array
Устаревшее свойство, заменено на unlockedFields.
Устарело
3.0.0 Заменено на unlockedFields.См. также
SecurityComponent::$unlockedFieldsarray()
$requireAuthsource
public array
Список действий, для которых требуется действительный ключ авторизации
См. также
SecurityComponent::requireAuth()Устарело
2.8.1 Эта функция запутанна и бесполезна.array()
$requireDeletesource
public array
Список действий контроллера, для которых требуется запрос DELETE
Устарело
3.0.0 Используйте CakeRequest::allowMethod() вместо этого.См. также
SecurityComponent::requireDelete()array()
$requireGetsource
public array
Список действий контроллера, для которых требуется запрос GET
Устарело
3.0.0 Используйте CakeRequest::allowMethod() вместо этого.См. также
SecurityComponent::requireGet()array()
$requirePostsource
public array
Список действий контроллера, для которых требуется запрос POST
Устарело
3.0.0 Используйте CakeRequest::allowMethod() вместо этого.См. также
SecurityComponent::requirePost()array()
$requirePutsource
public array
Список действий контроллера, для которых требуется запрос PUT
Устарело
3.0.0 Используйте CakeRequest::allowMethod() вместо этого.См. также
SecurityComponent::requirePut()array()
$requireSecuresource
public array
Список действий, для которых требуется защищённое SSL-соединение
См. также
SecurityComponent::requireSecure()array()
$unlockedActionssource
public array
Действия, которые следует исключить из проверок CSRF и валидации POST. Другие проверки, такие как requireAuth(), requireSecure(), requirePost(), requireGet() и т. д., всё равно будут применяться.
array()
$unlockedFieldssource
public array
Поля формы, которые следует исключить из проверки POST. Поля можно разблокировать в компоненте или с помощью FormHelper::unlockField(). Разблокированные поля не обязательны для POST, а значения скрытых разблокированных полей не проверяются.
array()
$validatePostsource
public boolean
Выполнять валидацию данных POST. Установите значение false, чтобы отключить для данных, поступающих от сторонних сервисов и т. д.
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.
https://api.cakephp.org/2.9/class-SecurityComponent.html