amxx-bg/cellar

简单的CSRF令牌生成器与验证器

dev-master / 1.0.x-dev 2019-06-06 12:32 UTC

This package is not auto-updated.

Last update: 2024-09-21 14:09:34 UTC


README

Master Build Status

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许可发布。