没有命名空间的类 yii yii\base yii\behaviors yii\caching yii\captcha yii\console yii\console\controllers yii\console\widgets yii\data yii\db yii\db\conditions yii\db\cubrid yii\db\cubrid\conditions yii\db\mssql yii\db\mssql\conditions yii\db\mysql yii\db\oci yii\db\oci\conditions yii\db\pgsql yii\db\sqlite yii\db\sqlite\conditions yii\di yii\filters yii\filters\auth yii\grid yii\helpers yii\i18n yii\log yii\mail yii\mutex yii\rbac yii\rest yii\test yii\validators yii\web yii\widgets

Class yii\filters\HostControl

继承yii\filters\HostControl » yii\base\ActionFilter » yii\base\Behavior » yii\base\BaseObject
实现yii\base\Configurable
可用版本自2.0.11
源码 https://github.com/yiichina/yii2/blob/api/framework/filters/HostControl.php

HostControl 提供对请求的主机名的简单控制。

此筛选器提供针对 ['host header' 攻击] 的保护(https://www.acunetix.com/vulnerabilities/web/host-header-attack), 仅允许对指定的主机名执行操作。

应用程序配置示例:

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',
                ],
            ],
        ];
    }

    // ...
}

Note: 限制允许的主机名的最佳方法是使用 Web 服务器的 “虚拟主机” 配置。 仅当此配置不可用或不安全时才应使用此筛选器。

公共属性

隐藏继承的属性

属性类型描述被定义在
$allowedHosts array|Closure|null 主机名列表,哪些是允许的。 每个主机都可以指定为通配符模式。例如: `php [ 'example. yii\filters\HostControl
$denyCallback callable 如果当前主机与 $allowedHosts 不匹配将调用的回调。 如果未设置,将调用denyAccess()。 回调的签名应如下: `php function (\yii\base\Action $action) ` 其中 $action 是当前 action 对象。 > Note: 在实现自己的主机拒绝处理时, 确保避免使用当前请求的 主机名, 创建绝对 URL 链接、缓存页面部件等。 yii\filters\HostControl
$except array List of action IDs that this filter should not apply to. yii\base\ActionFilter
$fallbackHostInfo string|null 回退主机信息 (例如。`http://www. yii\filters\HostControl
$only array List of action IDs that this filter should apply to. yii\base\ActionFilter
$owner yii\base\Component|null The owner of this behavior yii\base\Behavior

公共方法

隐藏继承的方法

方法描述被定义在
__call() Calls the named method which is not a class method. yii\base\BaseObject
__construct() Constructor. yii\base\BaseObject
__get() Returns the value of an object property. yii\base\BaseObject
__isset() Checks if a property is set, i.e. defined and not null. yii\base\BaseObject
__set() Sets value of an object property. yii\base\BaseObject
__unset() Sets an object property to null. yii\base\BaseObject
afterAction() 执行动作后立即调用此方法。 您可以覆盖此方法以对操作执行一些后处理。 yii\base\ActionFilter
afterFilter() yii\base\ActionFilter
attach() Attaches the behavior object to the component. yii\base\Behavior
beforeAction() This method is invoked right before an action is to be executed (after all possible filters.) You may override this method to do last-minute preparation for the action. yii\filters\HostControl
beforeFilter() yii\base\ActionFilter
canGetProperty() Returns a value indicating whether a property can be read. yii\base\BaseObject
canSetProperty() Returns a value indicating whether a property can be set. yii\base\BaseObject
className() Returns the fully qualified name of this class. yii\base\BaseObject
detach() Detaches the behavior object from the component. yii\base\Behavior
events() Declares event handlers for the $owner's events. yii\base\Behavior
hasMethod() Returns a value indicating whether a method is defined. yii\base\BaseObject
hasProperty() Returns a value indicating whether a property is defined. yii\base\BaseObject
init() Initializes the object. yii\base\BaseObject

受保护的方法

隐藏继承的方法

方法描述被定义在
denyAccess() 拒绝访问。 默认实现将立即显示 404 页,正在终止程序执行。 您可以重写此方法,创建自己的拒绝访问处理程序。在执行此操作时,请确保 避免使用当前请求的主机名,创建绝对 URL 链接,缓存页面部件等。 yii\filters\HostControl
getActionId() 通过将 yii\base\Action::$uniqueId 转换为相对于模块的 ID 来返回动作 ID。 yii\base\ActionFilter
isActive() 返回一个值,该值指示过滤器对于给定操作是否处于活动状态。 yii\base\ActionFilter

属性详情

$allowedHosts 公共 属性

主机名列表,哪些是允许的。 每个主机都可以指定为通配符模式。例如:

[
    'example.com',
    '*.example.com',
]

此字段可指定为以下签名的 PHP 回调:

function (\yii\base\Action $action) {
    //return array of strings
}

其中 $action 是当前 action 对象。

如果未设置此字段 - 将不执行任何主机名检查。

$denyCallback 公共 属性

如果当前主机与 $allowedHosts 不匹配将调用的回调。 如果未设置,将调用denyAccess()

回调的签名应如下:

function (\yii\base\Action $action)

其中 $action 是当前 action 对象。

Note: 在实现自己的主机拒绝处理时, 确保避免使用当前请求的 主机名, 创建绝对 URL 链接、缓存页面部件等。

public callable $denyCallback null
$fallbackHostInfo 公共 属性

回退主机信息 (例如。http://www.yiiframework.com) 使用 Request::$hostInfo 时无效。 在调用 $denyCallback 之前,此值将替换 Request::$hostInfo 以确保不会使用无效的主机进行进一步处理。您可以将其设置为 null 使 Request::$hostInfo 保持不变。 默认值为空字符串(这将导致创建相对 URL 而不是绝对 URL )。

参见 yii\web\Request::getHostInfo().

方法详情

beforeAction() 公共 方法

This method is invoked right before an action is to be executed (after all possible filters.) You may override this method to do last-minute preparation for the action.

public boolean beforeAction($action)
$action yii\base\Action

要执行的动作。

return boolean

该动作是否应继续执行。

denyAccess() 受保护 方法

拒绝访问。 默认实现将立即显示 404 页,正在终止程序执行。 您可以重写此方法,创建自己的拒绝访问处理程序。在执行此操作时,请确保 避免使用当前请求的主机名,创建绝对 URL 链接,缓存页面部件等。

protected void denyAccess($action)
$action yii\base\Action

要执行的操作。

throws yii\web\NotFoundHttpException