为什么我们在行动之前禁用Yii2中的enableCsrfValidation?

时间:2015-12-10 09:44:01

标签: php security model-view-controller yii2 csrf

我升级Yii2昨天升级到最新版本,升级后我的大多数网络控制器/操作都给了我

  

400错误请求无法验证您的数据提交....

在一些谷歌搜索之后,解决方案是在操作之前使用Yii::$app->controller->enableCsrfValidation = false;每个操作都会给您带来此错误。

我需要理解为什么我这样做,这样安全吗?有另一种解决方案吗?我不觉得这种方式是解决这个错误的最好方法。

1 个答案:

答案 0 :(得分:2)

目前这是一个已知的错误(请参阅https://github.com/yiisoft/yii2/issues/4497和其他人)。 Csrf cookie正确生成但验证不正确,因此失败。 代表Cross Site Request Forgery,一种强制客户端向服务器执行请求的攻击方法。为每个请求使用唯一生成的令牌,您无法进行此类攻击,因为攻击者不知道也无法猜出此令牌。

所以,是的,删除此选项会带来轻微的安全风险,但不是很大(取决于您的应用程序以及您可以使用单个请求执行的操作)。 您可能希望等待下一次更新,他们已经在解决此问题。

在当前版本中,这是解决问题的唯一途径,除非你想自己深入研究代码并在它们做之前修复它(我不建议这样做)。

希望有所帮助。

相关问题