Cakephp プログラミング

【Cakephp】素のHTMLフォームに速攻でCSRF対策を施す

 

CakephpにはFormヘルパーという便利にHTMLタグを出力してくれる機能があります。

そして、Formヘルパーを使用することで、定番(というか最低限?)のセキュリティ対策であるCSRFを仕込むことも簡単です。

 

WEBサービスの歴史的経緯から、単にHTMLで作成されているフォーム群を見かけることは今でも珍しくありません。

(多分、受託系だと、メンテナンス放置されてる案件とかね。。よーあるパターン)

簡易的にCSRFトークンを仕込む方法です。

 

モデルと紐付かないフォームは最初の引数に nullを渡すと作れます。

 code
<?= $this->Form->create(null, ['url' => ['controller' => ‘hoge’, 'action' => 'fuga']]) ?> 
// ここにレガシー?素のHTMLフォームがあるとする(別にFormヘルパーでもええんやで)
<?= $this->Form->end() ?>

<form> の次の行の display: none の div内に_csrfTokenという名前のトークンが付与されるはずです。 ChromeだとCtrl+U、もしくは右クリックでメニュー「ページのソースを確認」

 

リクエストに対し、トークンの内容を確認する

 code
// Controller内とかで実行
var_dump($this->request->getParam('_csrfToken'));

 

Cake3 or Cake4ではデフォルトでクロスサイトフォージェリー(CSRF)ミドルウェアが有効になっているはずなので、src\Application.phpで各種設定が行えます。

 

フレームワークを使用することで「あーCSRFもせなな・・」という面倒臭さも、割かし簡単に解決できます。

 

ぜひ、活用しましょうねー

 

-Cakephp, プログラミング
-

© 2021 FuwaFuwaShoChan BLOG