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 ライセンスに基づいてリリースされています。