我面对我的网站的另一个问题是在yii2中创建并且启用了CSRF但是当我复制包含csrf令牌的完整表单并在服务器外部创建新的html文件并从服务器外部提交表单时它接受我的表单。
预期结果是什么?
它应该给予许可问题
你得到的是什么?
它成功接受表单不确定我是否缺少任何配置或
Yii版本2.0.6
PHP版本5.5.38
操作系统CentOS版本6.9(最终版)
答案 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