2

対応するPHP マニュアル エントリに記載されているように、アップロードが制限を超えた場合、PHP は消去され$_POSTます。$_FILESpost_max_size

次のようなフォームがあり、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-ブラックホールをトリガーするために必要なファイルサイズを増やすだけで、コアの問題は解決しません。

4

2 に答える 2

2

わかりました、自分で解決策を見つけました。

私は私のに以下を追加しましたAppController::beforeFilter()

if (
   ($this->request->isPost() || $this->request->isPut()) &&
   empty($_POST) && empty($_FILES)
) {
    $this->Security->csrfCheck = false;
}

多分これは他の誰かに役立つでしょう。

于 2013-05-07T17:22:40.693 に答える