cellar
1.0.0
Cellar 是一个轻量级库,用于生成和验证签名令牌,可用于密码重置链接、身份验证、CSRF 或您可能需要的任何其他内容。它的目标是安全并具有最小的外部依赖性。
将 Cellar 添加到您的composer.json 并运行composer update
来安装它。
{
"require" : { "amxx-bg/cellar" : " 0.1.*@dev " }
}
$ secret = ' some-constant-secret-value ' ;
$ cellar = new AMXXBG Cellar ( $ secret , array ( ' lifetime ' => 3600 ));
// Generate with default lifetime from constructor options
$ token = $ cellar -> generate ();
// Overall check if token is valid
if ( $ cellar -> isValid ( $ token )) {
// Do whatever
}
// Or for more control use :
$ cellar -> hasExpired ( $ token );
$ cellar -> hasTampered ( $ token );
Cellar 将令牌生成为 {random}-{expirytime}-{signature} 形式的单个字符串,采用 Base64 编码,因此适合包含在大多数地方。
您可能想要使用 Cellar 的签名算法来验证一些附加数据没有被篡改。例如,您可以使用它在 URL 中包含电子邮件地址或其他确认信息,而不必存储令牌和用户服务器端之间的映射记录。
$ token = $ cellar -> generate ( 3600 , [ ' user_id ' => 9123 ]);
// Then , later :
if ( $ cellar -> isValid ( $ _GET [ ' token ' ], [ ' user_id ' => $ _GET [ ' user_id ' ]]) {
// You can now trust user_id , even if it came through the URL , because it matches the value you originally signed
// for this token .
}
偶尔轮换机密是一种很好的做法,但不要使尚未过期的签名失效。这很容易完成 - 添加一个old_secrets
配置选项,其中包含任何以前仍然有效的秘密。 Cellar 将开始使用新的密钥来生成新的代币,同时仍然接受使用旧值签名的代币。
一旦超过了最大令牌到期时间,您就可以从列表中删除旧秘密,Cellar 将停止接受它。
Cellar 有一套完整的 PHPUnit 单元测试 - 使用bin/phpunit
运行它们。只有附有结构良好的单元测试的贡献才会被接受。使用 Composer 安装应该可以为您提供处理该项目所需的一切。
Cellar 的版权为 2019 AMXX,并在 BSD 许可下发布。