freedomsex/self-signed-token

此包已被废弃,不再维护。作者建议使用 a4sex/self-signed-token 包。

基于密钥字符串和创建时间的一个简单的自签名令牌。

1.0.4 2021-11-24 20:39 UTC

This package is auto-updated.

Last update: 2023-04-05 09:51:14 UTC


README

基于密钥字符串和过期时间的一个简单的自签名令牌。过期时间和签名作为令牌的一部分保存。令牌的过期时间容易检查。通过签名也很容易验证其真实性。所有这些都不需要查询数据库。也不需要在其他地方保存令牌。您可以在Web服务器级别(通过Nginx)检查令牌。例如,使用 ngx_http_secure_link_module

$signedToken = new SelfSignedToken();
$token = $signedToken->create(); // that's all

我使用此令牌简单地检查其从创建时间起的过期情况。以及基于签名的真实性。所有这些都不需要查询数据库。也不需要将令牌本身保存在其他地方。您可以在Web服务器级别(通过Nginx)检查令牌。例如,使用 ngx_http_secure_link_module

我将Token ID保存在数据库中,以及其创建时间。但如果令牌无效或已过期,我不会查询数据库。这方便防止请求洪水,并作为简单但可靠的反DDoS保护。

+EasySignedToken - 令牌的简化版本。过期时间不保存到令牌中。相反,保存令牌的 创建时间。在验证期间,使用配置中设置的令牌生命周期。在这种情况下,您可以在创建后更改令牌的生命周期。

令牌

6e000eeabea27aa13a0476d656e5a15e.1560148598.70272e700a46b3040ee53f2b083e3875

  • 令牌 ID - 6e000eeabea27aa13a0476d656e5a15e
  • 过期时间 - 1560148598 (Unix 时间戳)
  • 签名 - 70272e700a46b3040ee53f2b083e3875

令牌 ID

MD5 哈希随机生成的字符串。非常随机,但不是为了任何加密保护。只是一个随机字符串。如果您认为这不是您想要的足够随机,您可以传递前缀。您可以将任何字符串 [[:alnum:]-+=_]{1,40} 作为 id 传递。

$id = $signedToken->generateId();
// OR
$id = $signedToken->generateId($prefix);

$token = $signedToken->create($id);
$token = $signedToken->create('anyrandomstring');

过期时间

令牌过期的时间(Unix 时间戳)。$ttl - 从创建开始的令牌生命周期(秒)。默认 60 秒。您可以根据需要设置时间。

$signedToken = new SelfSignedToken();
// OR
$signedToken = new SelfSignedToken($ttl);
// OR
$signedToken->setTtl($time);

$token = $signedToken->create();
$created = $signedToken->created(); // get creation time
// OR set any time
$token = $signedToken->create($id, $created);
$token = $signedToken->create(null, $created);

签名

简单的 MD5 哈希字符串。根据令牌 ID、过期时间和密钥短语生成。

$signedToken = new SelfSignedToken($ttl);
// OR 
$signedToken = new SelfSignedToken($ttl, $secret);
$token = $signedToken->create();

绕过

setBypass(true) - 忽略签名和过期时间

验证

$ignoreSign$ignoreExpires 布尔值

$signedToken->valid($token);
// OR
$signedToken->valid($token, $ignoreSign);
// OR
$signedToken->valid($token, $ignoreSign, $ignoreExpires);