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 許可下發布。