为什么我们在操作前禁用 Yii2 中的 enableCsrfValidation?

Why we disable enableCsrfValidation in Yii2 before action?

我昨天将 Yii2 升级到最新版本,升级后我的大部分网站 controllers/actions 都给我

400 bad request Unable to verify your data submission ....

经过一些谷歌搜索后,解决方案是在每次操作之前使用 Yii::$app->controller->enableCsrfValidation = false; 为您提供此错误。

我需要了解我为什么这样做,它安全吗?还有其他解决方案吗?我不认为这种方式是解决此错误的最佳方式。

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

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

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

希望对您有所帮助。