Класс SecurityComponent
Компонент Security предоставляет простой способ интеграции более строгой защиты в ваше приложение. Он предоставляет методы для различных задач, таких как:
- Ограничение HTTP-методов, принимаемых вашим приложением.
- Защита от CSRF.
- Защита от подделки форм
- Требование использования SSL.
- Ограничение межконтроллерной коммуникации.
- Объект
-
Компонент -
SecurityComponent
Ссылка: http://book.cakephp.org/2.0/ru/core-libraries/components/security-component.html
Авторские права: Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
Лицензия: Лицензия MIT
Расположение: 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 nonces и удаление их из действительных токенов. Использует простой таймаут для истечения срока действия токенов.
- _methodsRequired() protectedПроверка необходимости HTTP-методов
- _requireMethod() protectedУстанавливает действия, которые требуют HTTP-запроса $method, или пустое значение для всех действий
- _secureRequired() protectedПроверка необходимости доступа через защищенное соединение
- _validateCsrf() protected
Проверка наличия токена CSRF в данных POST контроллера и его подлинности/не истечения срока действия. Если токен действителен, он будет удален из списка действительных токенов.
- _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()исходный код 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необязательно массив() - Параметры для передачи методу
Возвращает
mixedОтвет метода обратного вызова контроллера
Исключение
BadRequestExceptionКогда blackholeCallback недоступен для вызова.
_expireTokens()source protected
_expireTokens( array $tokens )
Истекает срок действия CSRF nonces и удаляет их из списка допустимых токенов. Использует простой таймаут для истечения срока действия токенов.
Параметры
- массив
$tokens - Массив nonce => expires.
Возвращает
массивМассив nonce => expires.
_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необязательно массив() - Действия контроллера для установки требуемого 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Если указан, ответ controller 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 - A ComponentCollection, который этот компонент может использовать для ленивой загрузки своих компонентов
- массив
$settingsнеобязательно массив() - Массив параметров конфигурации.
Переопределяет
Object::__construct() __get()source public
__get( string $name )
Магический метод для ленивой загрузки $components.
Параметры
- строка
$name - Имя компонента для получения.
Возвращает
mixedОбъект компонента или 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Методы, унаследованные от Object
_mergeVars()source protected
_mergeVars( array $properties , string $class , boolean $normalize true )
Объединяет свойства объекта $property со свойствами в определении $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
Возвращаемое значение
mixedВозвращает результат вызова метода
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() для получения дополнительной информации о областях ведения журнала.
Возвращаемое значение
booleanУспешность записи в журнал
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 и именованных/переданных аргументов.
Возвращаемое значение
mixedБулево значение true или false при успехе/неудачи, или содержимое отображаемого действия, если в $extra задан ключ 'return'.
toString()source public
toString( )
Преобразование объекта в строку. Каждый класс может переопределять этот метод по мере необходимости.
Возвращаемое значение
строкаИмя этого класса
Подробное описание свойств
$allowedActionssource
public массив
Действия, из которых действия текущего контроллера разрешены для получения запросов.
См. также
SecurityComponent::requireAuth()array()
$allowedControllerssource
public массив
Контроллеры, из которых действия текущего контроллера разрешены для получения запросов.
См. также
SecurityComponent::requireAuth()array()
$blackHoleCallbacksource
public строка
Метод контроллера, который будет вызван, если этот запрос станет «черной дырой»
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.
http://api.cakephp.org/2.8/class-SecurityComponent.html