ホームページ >バックエンド開発 >PHPチュートリアル >PHP フォームにトークン検証メカニズムを追加する方法
Web 開発では、フォームはユーザーとサーバー間の通信のための重要なチャネルです。セキュリティを確保するには、フォームを送信するときにトークン検証メカニズムを追加して、悪意のある攻撃者による攻撃を回避する必要があります。
トークン検証の基本原理は次のとおりです。サーバーは乱数を生成し、フォームに非表示フィールドを追加することでトークンをクライアントに渡します。クライアントはフォームの送信時にトークンをサーバーに送り返します。サーバーはトークンの正当性を検証し、一致する場合はフォームの送信を許可し、一致しない場合は送信を拒否します。
以下では、PHP でトークン検証メカニズムを実装する方法を紹介します。
PHP の rand() 関数を使用して乱数をトークンとして生成し、そのトークンを非表示フィールドに追加します。フォーム内のフィールドのコードは次のとおりです:
<?php $token = rand(); //生成随机数作为Token ?> <form action="submit.php" method="post"> <input type="hidden" name="token" value="<?php echo $token; ?>"> <!-- 其他表单元素 --> <button type="submit">提交</button> </form>
フォームが送信された後、フォーム内のトークンが正しいかどうかを検証する必要があります。 。サーバーのセッションにトークンを保存し、フォームによって送信されたトークンとセッションに保存されているトークンを比較できます。コードは次のとおりです:
<?php session_start(); // 开启session $token = $_POST['token']; //获取表单提交的Token值 if ($token === $_SESSION['token']) { //判断Token是否匹配 // ... 其他操作 } else { echo 'Token验证失败'; } ?>
注: 各フォームの送信と検証が成功すると、新しいトークンを再生成し、セッションに保存されているトークン値を更新する必要があります。これにより、フォームの繰り返しの送信や悪意のある攻撃が回避されます。
<?php session_start(); // 开启session // 验证Token if ($_POST['token'] !== $_SESSION['token']) { die('Token验证失败'); } // 更新Token $_SESSION['token'] = rand(); // ... 其他操作 ?>
このようにして、PHP フォームにトークン検証メカニズムを追加し、Web サイトのセキュリティを向上させることに成功しました。
以上がPHP フォームにトークン検証メカニズムを追加する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。