Cakephp WEB開発

[Cakephp4]Formのsubmit時にBadRequestException

※本サイトはPR表記を含みます。

 

Cakephp4ではCsrfProtectionMiddlewareFormProtectionがデフォルトで有効になっていると思います。

CakephpはFormヘルパーでフォームを作成することで、CSRF対策やフォーム改ざんなど、基本的なセキュリティ対策をしてくれる便利なヘルパーです。

 

しかし、Formヘルパーでフォームを作成しているのに、FormProtectionからBadRequestExceptionでオコされる場合があります。

そのような時は、まずはForm内にhiddenフィールドがないか確認してください。

 

基本的に自分で定義したhiddenフィールドでも「フォーム改ざん」とみなされます。
なので、hiddenとセットでunlockFieldを仕掛けておきましょう。

 Form
<?= $this->Form->hidden('hoge') ?>
<?php $this->Form->unlockField('hoge'); ?>

 

特に、よくある例として、ReCaptchaトークンを仕込むときとか、どうしてもhiddenフィールドが必要になる時がありますね。
これ、過去に何度かやってたのに、なんで例外になるんじゃ!と忘れてたのでブログの刑になりました。

-Cakephp, WEB開発
-