yii2 CSRF未验证主机

时间:2018-05-15 06:31:09

标签: security yii2 csrf yii2-advanced-app yii2-validation

我面对我的网站的另一个问题是在yii2中创建并且启用了CSRF但是当我复制包含csrf令牌的完整表单并在服务器外部创建新的html文件并从服务器外部提交表单时它接受我的表单。

预期结果是什么?

它应该给予许可问题

你得到的是什么?

它成功接受表单不确定我是否缺少任何配置或

Yii版本2.0.6

PHP版本5.5.38

操作系统CentOS版本6.9(最终版)

2 个答案:

答案 0 :(得分:2)

CSRF保护基于以下事实:第三方网站不应该知道您的用户的CSRF令牌。如果您公开CSRF令牌,那么整个保护将不起作用。这是设计的。

如果要阻止来自不受信任域的请求,则应该使用CORS

答案 1 :(得分:1)

发生了这种情况,因为正如您所说,您正在使用CRSF。如果您想接受来自其他域的数据,则至少需要为该特定请求禁用CRSF。这样:

class MyController extends Controller
{
    public $enableCsrfValidation = false;

或者这样:

class MyController extends Controller
{
    public function beforeAction($action)
    {
        if (in_array($action->id, ['incoming'])) {
            $this->enableCsrfValidation = false;
        }
        return parent::beforeAction($action);
    }

来自食谱:https://yii2-cookbook.readthedocs.io/csrf/

此外,来自官方文档:https://www.yiiframework.com/doc/api/2.0/yii-web-controller# $ enableCsrfValidation-detail