volnix/csrfを使ってみる
CSRF対策のCompose ライブラリ volnix/csrf
CSRF対策のために発行したトークンをセッションとフォームにセット、リクエスト時に比較して一致しているかどうかを判定します。使い方はGithubのRead.meのとおりで難しくはないですが、日本語ドキュメントがみつからなかったので備忘録として。
インストール
composer requireするだけでした。
- $ composer require volnix/csrf
サンプル
いたってシンプルです。
- <?php
- session_start();
- require '../../../vendor/autoload.php';
- use Volnix\CSRF\CSRF;
- if (CSRF::validate($_POST)) {
- echo 'OK';
- } else {
- echo 'NG';
- }
- ?>
- <form action="" method="post">
- <input type="hidden" name="<?= CSRF::TOKEN_NAME ?>" value="<?= CSRF::getToken() ?>"/>
- <input type="text" name="action" placeholder="Enter an action."/>
- <input type="submit" value="Submit" name="sub"/>
- </form>
おわり
他にもGETメソッドで使用する方法や、hiddenタイプのinput要素を発行するする方法などが本家のGithubのRead.meに記載されています。
トークンはvalidateしたときに再発行されるので、例えばGETパラメータにトークンをセットした場合にはそのままリロードされたらエラーになってしまうとか、フォームの入力をAjaxで送信する場合には都度再セットが必要とか、運用上はなにかしら工夫が必要そうです。
参照サイト
関連記事