HTMLフォームでのCSRFトークンの使用方法


以下に、HTMLフォームでCSRFトークンを使用する方法とコード例をいくつか示します。

  1. サーバーサイドのCSRFトークン生成: 最初に、サーバーサイドでCSRFトークンを生成する必要があります。このトークンは、フォームのhiddenフィールドに埋め込まれます。以下は、PHPを使用した例です。

    <?php
    session_start();
    $csrfToken = bin2hex(random_bytes(32));
    $_SESSION['csrf_token'] = $csrfToken;
    ?>
  2. フォームの生成と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>
  3. サーバーサイドでの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攻撃からの保護が可能になります。ただし、サーバーサイドの言語やフレームワークによって具体的な実装方法は異なる場合がありますので、適切なドキュメントやリソースを参照してください。