【发布时间】:2014-06-23 17:25:40
【问题描述】:
如相应的PHP manual entry 中所述,如果上传超过post_max_size 限制,PHP 将清除$_POST 和$_FILES。
我有一个类似下面的表单,我正在使用Security 组件:
echo $this->Form->create(false, array('type' => 'file', 'action' => '...'));
echo $this->Form->file('documentFile');
echo $this->Form->end('Upload');
现在,当我上传超过上述限制的大文件时,由于 CSRF 验证失败,我得到“请求已被黑洞” - 这并不奇怪,因为 PHP 清除 $_POST 也会删除 CSRF 保护令牌。
我可以使用Security->unlockedActions 来解决这个问题,但这似乎并不理想(而且我将失去 CSRF 保护)。有什么办法可以防止这种情况下的黑洞?
编辑:我不认为增加 post_max_size 是一种解决方案 - 它只会增加触发黑洞所需的文件大小,但不能解决核心问题。
【问题讨论】:
-
增加 post_max_size
-
@nathanhayfield 但这也是一种解决方法,对吧?
-
如果您的目标是上传更大的文件,则不会。
-
哦,对了,也许应该澄清一下。我的目标是向用户显示有意义的错误消息,而不是黑洞。
标签: php file-upload cakephp-2.3 csrf-protection