JWT (JSON Web Token) ブラックリストを使用して PHP セキュリティ検証を実装する
インターネットの発展に伴い、Web アプリケーションのセキュリティがますます重要になってきています。 PHP アプリケーションのセキュリティ検証を実装する場合、セキュリティ検証ソリューションとして JWT (JSON Web Token) を使用できます。 JWT のセキュリティを強化するために、ブラックリストを使用して期限切れのトークンを管理できます。
JWT は、認証と認可のためのオープン標準 (RFC 7519) です。これは、ヘッダー、ペイロード、署名の 3 つの部分で構成されます。ヘッダーにはアルゴリズムとトークン タイプの情報が含まれ、ペイロードにはユーザー データ情報が含まれ、署名はヘッダー、ペイロード、秘密キーの署名に基づいて生成されます。
JWT を使用した認証プロセスは次のとおりです。
ただし、JWT が長期間有効である場合、トークンが漏洩すると、攻撃者はいつでもそのトークンを使用して不正な操作を実行できます。この問題を解決するには、ブラックリストを使用して期限切れのトークンを管理し、ユーザーがログアウトするかパスワードを変更すると、関連するトークンがブラックリストに追加されます。
次は、JWT ブラックリストを使用して PHP セキュリティ検証を実装するコード例です:
// 定义 JWT 的 Secret Key $secretKey = "your_secret_key"; // 生成 JWT function generateJWT($userId) { global $secretKey; $header = json_encode(['typ' => 'JWT', 'alg' => 'HS256']); $payload = json_encode(['userId' => $userId]); $base64UrlHeader = base64UrlEncode($header); $base64UrlPayload = base64UrlEncode($payload); $signature = hash_hmac('sha256', $base64UrlHeader . "." . $base64UrlPayload, $secretKey, true); $base64UrlSignature = base64UrlEncode($signature); return $base64UrlHeader . "." . $base64UrlPayload . "." . $base64UrlSignature; } // 验证 JWT 是否有效 function validateJWT($jwt) { global $secretKey; list($base64UrlHeader, $base64UrlPayload, $base64UrlSignature) = explode('.', $jwt); $signature = base64UrlDecode($base64UrlSignature); $expectedSignature = hash_hmac('sha256', $base64UrlHeader . "." . $base64UrlPayload, $secretKey, true); if ($signature !== $expectedSignature) { return false; } $payload = json_decode(base64UrlDecode($base64UrlPayload), true); // 在 Blacklist 中查找当前 Token 是否存在 if (isTokenBlacklisted($jwt)) { return false; } return $payload['userId']; } // 将字符串进行 Base64Url 编码 function base64UrlEncode($data) { $base64 = base64_encode($data); if ($base64 === false) { return false; } // 替换特殊字符 $base64Url = strtr($base64, '+/', '-_'); // 删除 = 字符 $base64Url = rtrim($base64Url, '='); return $base64Url; } // 将 Base64Url 编码的字符串解码 function base64UrlDecode($base64Url) { // 添加 = 字符 $base64 = str_pad(strtr($base64Url, '-_', '+/'), strlen($base64Url) % 4, '=', STR_PAD_RIGHT); return base64_decode($base64); } // 将 Token 加入 Blacklist function blacklistToken($jwt) { // 在数据库或缓存中将 Token 标记为失效 } // 判断 Token 是否在 Blacklist 中 function isTokenBlacklisted($jwt) { // 在数据库或缓存中查询 Token 是否存在 }
上記のコード例を使用すると、PHP アプリケーションに JWT セキュリティ検証とブラックリスト管理を簡単に実装できます。 JWT とブラックリストを使用することで、認証のセキュリティを強化し、Web アプリケーションの保護を強化できます。
概要:
この記事では、JWT とブラックリストを使用して PHP セキュリティ検証を実装する方法を紹介します。 JWT を通じてユーザー情報を安全に送信し、ブラックリストを使用して期限切れのトークンを管理し、認証のセキュリティを強化できます。実際の開発では、実際のニーズに応じてコードを最適化および拡張し、特定のシナリオのセキュリティ要件を満たすことができます。
参考リンク:
[1] JSON Web Token (JWT) - https://jwt.io/
[2] RFC 7519 - https://tools.ietf.org/html /rfc7519
以上がJWT (JSON Web Token) ブラックリストを使用して PHP セキュリティ検証を実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。