PHP フォームにトークン検証メカニズムを追加する方法

王林
リリース: 2023-06-24 18:08:01
オリジナル
1083 人が閲覧しました

Web 開発では、フォームはユーザーとサーバー間の通信のための重要なチャネルです。セキュリティを確保するには、フォームを送信するときにトークン検証メカニズムを追加して、悪意のある攻撃者による攻撃を回避する必要があります。

トークン検証の基本原理は次のとおりです。サーバーは乱数を生成し、フォームに非表示フィールドを追加することでトークンをクライアントに渡します。クライアントはフォームの送信時にトークンをサーバーに送り返します。サーバーはトークンの正当性を検証し、一致する場合はフォームの送信を許可し、一致しない場合は送信を拒否します。

以下では、PHP でトークン検証メカニズムを実装する方法を紹介します。

  1. フォームに非表示フィールドを追加します。

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>
ログイン後にコピー
  1. トークンの検証

フォームが送信された後、フォーム内のトークンが正しいかどうかを検証する必要があります。 。サーバーのセッションにトークンを保存し、フォームによって送信されたトークンとセッションに保存されているトークンを比較できます。コードは次のとおりです:

<?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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート