Класс yii\filters\HostControl
| Наследование | yii\filters\HostControl » yii\base\ActionFilter » yii\base\Behavior » yii\base\Object |
|---|---|
| Реализует | yii\base\Configurable |
| Доступно с версии | 2.0.11 |
| Исходный код | https://github.com/yiisoft/yii2/blob/master/framework/filters/HostControl.php |
HostControl обеспечивает простой контроль над запрошенным именем хоста.
Этот фильтр обеспечивает защиту от 'атак на заголовок хоста', разрешая выполнение действия только для указанных имен хостов.
Пример конфигурации приложения:
return [
'as hostControl' => [
'class' => 'yii\filters\HostControl',
'allowedHosts' => [
'example.com',
'*.example.com',
],
],
// ...
];
Пример конфигурации контроллера:
use yii\web\Controller;
use yii\filters\HostControl;
class SiteController extends Controller
{
public function behaviors()
{
return [
'hostControl' => [
'class' => HostControl::className(),
'allowedHosts' => [
'example.com',
'*.example.com',
],
],
];
}
// ...
}
Примечание: лучший способ ограничить разрешенные имена хостов — использование конфигурации виртуальных хостов веб-сервера. Этот фильтр следует использовать только в том случае, если эта конфигурация недоступна или скомпрометирована.
Общедоступные свойства
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| $allowedHosts | массив|Замыкание|null | Список имен хостов, которые разрешены. | yii\filters\HostControl |
| $denyCallback | вызываемый объект | Обратный вызов, который будет вызван, если текущий хост не соответствует $allowedHosts. | yii\filters\HostControl |
| $except | массив | Список идентификаторов действий, к которым этот фильтр не должен применяться. | yii\base\ActionFilter |
| $fallbackHostInfo | строка|null | Дополнительная информация о хосте (например, `http://www). | yii\filters\HostControl |
| $only | массив | Список идентификаторов действий, к которым этот фильтр должен применяться. | yii\base\ActionFilter |
| $owner | yii\base\Component|null | Владелец этого поведения | yii\base\Behavior |
Общедоступные методы
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает именованный метод, который не является методом класса. | yii\base\Object |
| __construct() | Конструктор. | yii\base\Object |
| __get() | Возвращает значение свойства объекта. | yii\base\Object |
| __isset() | Проверяет, установлено ли свойство, т.е. определено и не равно null. | yii\base\Object |
| __set() | Устанавливает значение свойства объекта. | yii\base\Object |
| __unset() | Устанавливает свойство объекта в null. | yii\base\Object |
| afterAction() | Этот метод вызывается сразу после выполнения действия. | yii\base\ActionFilter |
| afterFilter() | yii\base\ActionFilter | |
| attach() | Присоединяет объект поведения к компоненту. | yii\base\Behavior |
| beforeAction() | Этот метод вызывается непосредственно перед выполнением действия (после всех возможных фильтров). Вы можете переопределить этот метод, чтобы выполнить последнюю подготовку к действию. | yii\filters\HostControl |
| beforeFilter() | yii\base\ActionFilter | |
| canGetProperty() | Возвращает значение, указывающее, можно ли прочитать свойство. | yii\base\Object |
| canSetProperty() | Возвращает значение, указывающее, можно ли установить свойство. | yii\base\Object |
| className() | Возвращает полное имя этого класса. | yii\base\Object |
| detach() | Отсоединяет объект поведения от компонента. | yii\base\Behavior |
| events() | Объявляет обработчики событий для событий $owner. | yii\base\Behavior |
| hasMethod() | Возвращает значение, указывающее, определён ли метод. | yii\base\Object |
| hasProperty() | Возвращает значение, указывающее, определено ли свойство. | yii\base\Object |
| init() | Инициализирует объект. | yii\base\Object |
Защищённые методы
| Метод | Описание | Определено в |
|---|---|---|
| denyAccess() | Отказывает в доступе. | yii\filters\HostControl |
| getActionId() | Возвращает идентификатор действия, преобразуя yii\base\Action::$uniqueId в идентификатор, относительный к модулю. | yii\base\ActionFilter |
| isActive() | Возвращает значение, указывающее, активен ли фильтр для данного действия. | yii\base\ActionFilter |
Подробности свойств
$allowedHosts общедоступное свойство
Список имен хостов, которые разрешены. Каждый хост может быть указан в виде шаблона с подстановкой. Например:
[
'example.com',
'*.example.com',
]
Это поле может быть указано как PHP обратный вызов с следующим сигнатурой:
function (\yii\base\Action $action) {
//return array of strings
}
где $action — текущий объект действия.
Если это поле не установлено, проверка имени хоста не будет выполняться.
public array|Closure|null $allowedHosts = null
$denyCallback общедоступное свойство
Обратный вызов, который будет вызван, если текущий хост не соответствует $allowedHosts. Если не установлено, будет вызван denyAccess().
Сигнатура обратного вызова должна быть следующей:
function (\yii\base\Action $action)
где $action — текущий объект действия.
Примечание: при реализации собственной обработки отказа доступа к хосту убедитесь, что вы избегаете использования текущего имени запрошенного хоста, создания абсолютных ссылок URL, кэширования частей страницы и т. д.
public callable $denyCallback = null
$fallbackHostInfo общедоступное свойство
Дополнительная информация о хосте (например, http://www.yiiframework.com) используемая, когда Request::$hostInfo недопустима. Это значение заменит Request::$hostInfo перед вызовом $denyCallback, чтобы убедиться, что недопустимый хост не будет использоваться для дальнейшей обработки. Вы можете установить его в null чтобы оставить Request::$hostInfo без изменений. Значение по умолчанию — пустая строка (это приведет к созданию относительных ссылок вместо абсолютных).
См. также yii\web\Request::getHostInfo().
public string|null $fallbackHostInfo = ''
Подробности методов
beforeAction() public method
Этот метод вызывается непосредственно перед выполнением действия (после всех возможных фильтров). Вы можете переопределить этот метод, чтобы выполнить последнюю подготовку к выполнению действия.
| public boolean beforeAction ( $action ) | ||
|---|---|---|
| $action | yii\base\Action |
Действие, которое будет выполнено. |
| return | boolean |
Выполнять ли действие дальше. |
denyAccess() protected method
Отказывает в доступе.
Стандартная реализация сразу отобразит страницу 404, прекратив выполнение программы. Вы можете переопределить этот метод, создав свой обработчик отказа в доступе. При этом убедитесь, что вы не используете текущее запрашиваемое имя хоста, не создаете абсолютные ссылки на URL, не кешируете части страницы и т. д.
| protected void denyAccess ( $action ) | ||
|---|---|---|
| $action | yii\base\Action |
Действие, которое будет выполнено. |
| throws | yii\web\NotFoundHttpException | |
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-filters-hostcontrol.html