Spec-Zone.ru › CakePHP 2.8

Класс SecurityComponent

Компонент Security предоставляет простой способ интеграции более строгой защиты в ваше приложение. Он предоставляет методы для различных задач, таких как:

  • Ограничение HTTP-методов, принимаемых вашим приложением.
  • Защита от CSRF.
  • Защита от подделки форм
  • Требование использования SSL.
  • Ограничение межконтроллерной коммуникации.
Объект
Extended by Компонент
Extended by SecurityComponent
Пакет: Cake\Контроллер\Компонент
Ссылка: 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

Краткое описание свойств

  • $_action protected
    string
    Текущее действие контроллера
  • $allowedActions public
    array

    Действия, из которых действия текущего контроллера разрешено получать запросы.

  • $allowedControllers public
    array

    Контроллеры, из которых действия текущего контроллера разрешено получать запросы.

  • $blackHoleCallback public
    string
    Метод контроллера, который будет вызван, если запрос отклонен
  • $components public
    array
    Другие компоненты, используемые компонентом Security
  • $csrfCheck public
    boolean
    Использовать формы, защищенные от CSRF. Установите в false, чтобы отключить защиту от CSRF для форм.
  • $csrfExpires public
    string

    Время, в течение которого токен CSRF действителен. Каждый запрос формы/страницы генерирует новый токен, который может быть отправлен только один раз, если он не истек. Может быть любое значение, совместимое с strtotime()

  • $csrfLimit public
    integer

    Управление количеством открытых токенов пользователя. Это наиболее полезно с одноразовыми токенами. Поскольку новые токены создаются при каждом запросе, жесткое ограничение на количество открытых токенов может быть полезно для контроля размера файла сеанса.

  • $csrfUseOnce public
    boolean

    Управляет тем, используются ли токены CSRF и сбрасываются. Установите в false, чтобы не генерировать новые токены при каждом запросе. Один токен будет повторно использован, пока не истечет. Это уменьшает вероятность получения пользователем недействительных запросов из-за потребления токенов. Это имеет побочный эффект, делающий CSRF менее безопасным, так как токены могут быть повторно использованы.

  • $disabledFields public
    array
    Устаревшее свойство, заменено свойством unlockedFields.
  • $request public
    CakeRequest
    Объект запроса
  • $requireAuth public
    array
    Список действий, для которых требуется действительный ключ аутентификации
  • $requireDelete public
    array
    Список действий контроллеров, для которых требуется запрос DELETE
  • $requireGet public
    array
    Список действий контроллеров, для которых требуется запрос GET
  • $requirePost public
    array
    Список действий контроллеров, для которых требуется запрос POST
  • $requirePut public
    array
    Список действий контроллеров, для которых требуется запрос PUT
  • $requireSecure public
    array
    Список действий, для которых требуется SSL-защищенное соединение
  • $unlockedActions public
    array

    Действия, которые необходимо исключить из проверки CSRF и POST-валидации. Другие проверки, такие как requireAuth(), requireSecure(), requirePost(), requireGet() и т. д., все равно будут применяться.

  • $unlockedFields public
    array

    Поля формы, которые нужно исключить из проверки POST. Поля можно разблокировать как в компоненте, так и с помощью FormHelper::unlockField(). Поля, которые были разблокированы, не обязательны для POST, а разблокированные скрытые поля не проверяют свои значения.

  • $validatePost public
    boolean

    Необходимо ли проверять данные POST. Установите в false, чтобы отключить для данных, поступающих от сторонних служб и т. д.

Наследованные свойства

  • _Collection, _componentMap, settings

Краткое описание методов

  • _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|null
True, если требуется аутентификация
END_OF_DOCUMENT_MARKER

_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
Инициализируемый контроллер

Возвращает

boolean
True, если $method требуется

_requireMethod()source protected

_requireMethod( string $method , array $actions array() )

Устанавливает действия, для которых требуется HTTP-запрос $method, или пустое значение для всех действий

Параметры

строка $method
HTTP-метод для назначения действий контроллера
массив $actions необязательно массив()
Действия контроллера для установки требуемого HTTP-метода.

_secureRequired()source protected

_secureRequired( Controller $controller )

Проверка, требуется ли безопасное подключение

Параметры

Controller $controller
Инициализируемый контроллер

Возвращает

boolean
True, если требуется безопасное подключение

_validateCsrf()source protected

_validateCsrf( Controller $controller )

Проверка, что контроллер содержит CSRF-токен в данных POST, и что токен действителен/не истек. Если токен действителен, он будет удален из списка допустимых токенов.

Параметры

Controller $controller
Контроллер для проверки

Возвращает

boolean
Действительный CSRF-токен.

_validatePost()source protected

_validatePost( Controller $controller )

Проверка отправленной формы

Параметры

Controller $controller
Инициализируемый контроллер

Возвращает

boolean
true, если отправленная форма действительна

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-callbacks

generateToken()source public

generateToken( CakeRequest $request )

Вручную добавляет информацию о CSRF-токене в предоставленный объект запроса.

Параметры

CakeRequest $request
Объект запроса для добавления.

Возвращает

boolean

requireAuth()source public

requireAuth( )

Устанавливает действия, для которых требуются действия форм в списке разрешенных.

Добавление действий с помощью этого метода будет применять ограничения, установленные в SecurityComponent::$allowedControllers и SecurityComponent::$allowedActions.

Ссылка

http://book.cakephp.org/2.0/ru/core-libraries/components/security-component.html#SecurityComponent::requireAuth

requireDelete()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::requirePost

requirePut()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::requireSecure

startup()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.
END_OF_DOCUMENT_MARKER

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::beforeRedirect

beforeRender()source public

beforeRender( Controller $controller )

Вызывается перед Controller::beforeRender(), перед загрузкой класса представления и перед Controller::render()

Параметры

Controller $controller
Контроллер с компонентами для beforeRender

Ссылка

http://book.cakephp.org/2.0/ru/controllers/components.html#Component::beforeRender

initialize()source public

initialize( Controller $controller )

Вызывается перед Controller::beforeFilter().

Параметры

Controller $controller
Контроллер с компонентами для инициализации

Ссылка

http://book.cakephp.org/2.0/ru/controllers/components.html#Component::initialize

shutdown()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( )

Преобразование объекта в строку. Каждый класс может переопределять этот метод по мере необходимости.

Возвращаемое значение

строка
Имя этого класса

Подробное описание свойств

$_actionsource

protected строка

Содержит текущее действие контроллера

null

$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::$unlockedFields
array()

$requestsource

public CakeRequest

Объект запроса

$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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API