以下に、HTMLフォームでCSRFトークンを使用する方法とコード例をいくつか示します。
-
サーバーサイドのCSRFトークン生成: 最初に、サーバーサイドでCSRFトークンを生成する必要があります。このトークンは、フォームのhiddenフィールドに埋め込まれます。以下は、PHPを使用した例です。
<?php session_start(); $csrfToken = bin2hex(random_bytes(32)); $_SESSION['csrf_token'] = $csrfToken; ?>
-
フォームの生成とCSRFトークンの埋め込み: 生成されたCSRFトークンを、HTMLフォームのhiddenフィールドに埋め込みます。以下は、HTMLとPHPを使用した例です。
<form action="submit.php" method="POST"> <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>"> <!-- その他のフォームフィールド --> <input type="submit" value="送信"> </form>
-
サーバーサイドでのCSRFトークンの検証: フォームの送信先のサーバーサイドで、CSRFトークンを検証する必要があります。以下は、PHPを使用した例です。
<?php session_start(); if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) { // CSRFトークンが無効です die('Invalid CSRF token'); } // 有効なCSRFトークンが提供された場合の処理 } ?>
これらの手順を実装することで、HTMLフォームにおけるCSRF攻撃からの保護が可能になります。ただし、サーバーサイドの言語やフレームワークによって具体的な実装方法は異なる場合がありますので、適切なドキュメントやリソースを参照してください。