amxx-bg/cellar
简单的CSRF令牌生成器与验证器
dev-master / 1.0.x-dev
2019-06-06 12:32 UTC
Requires
- php: ^7.2
- ext-openssl: *
- lib-openssl: *
Requires (Dev)
- phpunit/phpunit: ^7.0
This package is not auto-updated.
Last update: 2024-09-21 14:09:34 UTC
README
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以单个字符串的形式生成令牌,格式为{随机}-{有效期}-{签名},采用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许可发布。