Cakephp プログラミング

[Cakephp4]Formのsubmit時にBadRequestException

 

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, プログラミング
-

© 2022 FuwaFuwaShoChan BLOG