Cakephp WEB開発

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

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

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

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

 

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

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

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

 

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

<?= $this->Form->create(null, ['url' => ['controller' => ‘hoge’, 'action' => 'fuga']]) ?> 
// 素のHTMLフォームがあるとする
<?= $this->Form->end() ?>

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

 

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

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

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

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

-Cakephp, WEB開発
-