ホームページ  >  記事  >  バックエンド開発  >  PHPでトークンを検証する方法

PHPでトークンを検証する方法

(*-*)浩
(*-*)浩オリジナル
2019-09-19 11:27:146243ブラウズ

Token はトークンであり、その最大の特徴はランダム性と予測不可能性です。 一般のハッカーやソフトウェアには推測できません。

PHPでトークンを検証する方法それでは、トークンの役割は何でしょうか?原理は何ですか?

トークンは通常、フォームの繰り返し送信と csrf 攻撃 (クロスサイト リクエスト フォージェリ) を防ぐための 2 つの場所で使用されます。

リクエスト URL の生成 (推奨学習: PHP プログラミングの入門から習熟まで )

<?php
$key = &#39;key&#39;; //秘钥 ,非常重要,不参与url传输、秘钥泄露将导致token验证失效
$data[&#39;time&#39;] = time();
$data[&#39;data&#39;] = &#39;data&#39;;
$data[&#39;token&#39;]= md5( md5($key) . md5($data[&#39;time&#39;]) );
// 拼接url
$url = &#39;domain.com/api.php?&#39; . http_build_query($data);

サーバー側の検証トークン

<?php
$param = $_GET;
// 验证时间戳
if (!isset($param[&#39;time&#39;]) || intval($param[&#39;time&#39;]) <= 1) {
    exit(&#39;时间戳不正确&#39;);
}
// 设置每个token的过期时间为60秒
if (time() - intval($param[&#39;time&#39;]) > 60) {
    exit(&#39;请求超时&#39;);
}
// 验证token

// 服務器端生成token
$key = &#39;key&#39;; //秘钥
$time = time();
$server_token= md5( md5($key) . md5($param[&#39;time&#39;]) );;
if ($server_token !== $param[&#39;token&#39;]) {
    exit(&#39;token错误&#39;);
}

echo &#39;验证通过&#39;;
// 其他业务逻辑
// ...

以上がPHPでトークンを検証する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。