Cellar est une bibliothèque légère permettant de générer et de valider des jetons signés qui peuvent être utilisés pour les liens de réinitialisation de mot de passe, l'authentification, CSRF ou tout ce dont vous pourriez avoir besoin. Il vise à être sécurisé et à avoir un minimum de dépendances externes.
Ajoutez Cellar à votre composer.json et exécutez composer update
pour l'installer.
{
"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 génère des jetons sous la forme d'une chaîne unique de la forme {random}-{expirytime}-{signature}, codée en base64, donc adaptée à l'inclusion dans la plupart des endroits.
Vous souhaiterez peut-être utiliser l'algorithme de signature de Cellar pour vérifier que certaines données supplémentaires n'ont pas été falsifiées. Par exemple, vous pouvez l'utiliser pour inclure une adresse e-mail ou d'autres informations de confirmation dans une URL plutôt que d'avoir à stocker un enregistrement du mappage entre le jeton et le côté serveur de l'utilisateur.
$ 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 .
}
Il est recommandé d'effectuer une rotation occasionnelle des secrets, mais sans invalider les signatures qui n'ont pas encore expiré. Cela se fait facilement – ajoutez une option de configuration old_secrets
avec tous les secrets précédents qui devraient toujours être valides. Cellar commencera à utiliser le nouveau secret pour produire de nouveaux jetons tout en acceptant les jetons signés avec une valeur plus ancienne.
Une fois le délai d'expiration maximum de votre jeton dépassé, vous pouvez alors supprimer l'ancien secret de votre liste et Cellar cessera de l'accepter.
Cellar dispose d'une suite complète de tests unitaires PHPUnit - exécutez-les avec bin/phpunit
. Les contributions ne seront acceptées que si elles sont accompagnées de tests unitaires bien structurés. L'installation avec composer devrait vous fournir tout ce dont vous avez besoin pour travailler sur le projet.
Cellar est protégé par copyright 2019 AMXX et publié sous la licence BSD.