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

Php 为什么我们在采取行动之前在Yii2中禁用enableCsrfValidation?,php,security,model-view-controller,yii2,csrf,Php,Security,Model View Controller,Yii2,Csrf,我昨天升级了Yii2到最新版本,升级后我的大多数web控制器/操作都给了我 400错误请求无法验证您提交的数据 谷歌搜索之后,解决方案是使用Yii::$app->controller->enableCsrfValidation=false在每个操作之前的操作中都会出现此错误 我需要了解我为什么这样做,安全吗?还有别的解决办法吗?我觉得这不是克服这个错误的最好方法 这是目前已知的错误(请参阅和其他)。 Csrf cookie生成正确,但验证不正确,因此失败。表示一种攻击方法,用于强制客户端执行对服

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

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

谷歌搜索之后,解决方案是使用
Yii::$app->controller->enableCsrfValidation=false在每个操作之前的操作中都会出现此错误


我需要了解我为什么这样做,安全吗?还有别的解决办法吗?我觉得这不是克服这个错误的最好方法

这是目前已知的错误(请参阅和其他)。 Csrf cookie生成正确,但验证不正确,因此失败。表示一种攻击方法,用于强制客户端执行对服务器的请求。对每个请求使用唯一生成的令牌会使攻击者无法进行此类攻击,因为攻击者不知道也猜不到该令牌

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

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

希望有帮助