当前位置:首页 > PHP

token php实现

2026-03-13 00:27:33PHP

Token 在 PHP 中的实现方法

生成 Token

使用 random_bytesopenssl_random_pseudo_bytes 生成安全的随机字符串作为 Token:

$token = bin2hex(random_bytes(32));
// 或者
$token = bin2hex(openssl_random_pseudo_bytes(32));

存储 Token

将生成的 Token 存储到数据库或会话中,用于后续验证:

// 存储到数据库示例
$stmt = $pdo->prepare("INSERT INTO user_tokens (user_id, token, expires_at) VALUES (?, ?, ?)");
$stmt->execute([$userId, $token, date('Y-m-d H:i:s', strtotime('+1 hour'))]);

// 存储到 Session
$_SESSION['csrf_token'] = $token;

验证 Token

在需要验证 Token 的地方,从请求中获取 Token 并与存储的 Token 比对:

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $requestToken = $_POST['token'] ?? '';
    $storedToken = $_SESSION['csrf_token'] ?? '';

    if (!hash_equals($storedToken, $requestToken)) {
        die('Invalid token');
    }
}

JWT Token 实现

使用 firebase/php-jwt 库生成和验证 JWT Token:

token php实现

require 'vendor/autoload.php';
use \Firebase\JWT\JWT;

// 生成 JWT Token
$key = "your_secret_key";
$payload = [
    "iss" => "your_issuer",
    "aud" => "your_audience",
    "iat" => time(),
    "exp" => time() + 3600,
    "data" => ["user_id" => 123]
];
$jwt = JWT::encode($payload, $key);

// 验证 JWT Token
try {
    $decoded = JWT::decode($jwt, $key, ['HS256']);
    print_r($decoded);
} catch (Exception $e) {
    echo 'Invalid token: ', $e->getMessage();
}

安全注意事项

  • 使用 hash_equals 比较 Token 以避免时序攻击
  • 设置合理的 Token 过期时间
  • 对敏感操作要求重新生成 Token
  • 使用 HTTPS 传输 Token

标签: tokenphp
分享给朋友:

相关文章

php实现登录

php实现登录

PHP 登录功能实现 数据库连接与用户表创建 创建一个数据库连接文件 db.php,用于管理数据库连接。MySQL 示例代码如下: <?php $host = 'localhost'; $db…

php实现异步

php实现异步

PHP 实现异步的方法 PHP 本身是同步执行的脚本语言,但可以通过以下方法模拟异步操作或实现异步效果: 使用多进程(pcntl_fork) 通过 pcntl_fork 创建子进程实现异步,适用于…

php搜索功能实现

php搜索功能实现

实现基本的PHP搜索功能 使用MySQL数据库和PHP实现简单的关键词搜索功能。需要确保数据库中有可供搜索的表和数据。 // 连接数据库 $conn = new mysqli('localhost'…

php实现的进度条

php实现的进度条

PHP 实现的进度条方法 在 PHP 中实现进度条通常可以通过命令行脚本(CLI)或 Web 页面两种方式完成。以下是几种常见的实现方法: 命令行进度条 使用 PHP CLI 实现进度条,可以通过不…

php数组实现

php数组实现

PHP 数组的基本实现 PHP 数组是一种非常灵活的数据结构,可以存储多个值,并且支持多种类型的键(整数或字符串)。PHP 数组实际上是有序映射(ordered map),可以看作是列表(vector…

php登陆功能实现

php登陆功能实现

实现PHP登录功能 数据库准备 创建一个用户表存储登录信息,基本字段包括用户名、密码(需加密)等: CREATE TABLE users ( id INT AUTO_INCREMENT PR…