Cellar es una biblioteca liviana para generar y validar tokens firmados que se pueden usar para enlaces de restablecimiento de contraseña, autenticación, CSRF o cualquier otra cosa que pueda necesitar. Su objetivo es ser seguro y tener dependencias externas mínimas.
Agregue Cellar a su compositor.json y ejecute composer update
para instalarlo.
{
"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 genera tokens como una única cadena con el formato {random}-{expirytime}-{signature}, codificada en base64, por lo que es adecuada para su inclusión en la mayoría de los lugares.
Es posible que desee utilizar el algoritmo de firma de Cellar para verificar que algunos datos adicionales no hayan sido alterados. Por ejemplo, podría utilizar esto para incluir una dirección de correo electrónico u otra información de confirmación en una URL en lugar de tener que almacenar un registro de la asignación entre el token y el servidor del usuario.
$ 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 .
}
Es una buena práctica rotar ocasionalmente los secretos, pero sin invalidar las firmas que aún no han caducado. Esto se hace fácilmente: agregue una opción de configuración old_secrets
con los secretos anteriores que aún deberían ser válidos. Cellar comenzará a utilizar el nuevo secreto para producir nuevos tokens y al mismo tiempo aceptará tokens firmados con un valor anterior.
Una vez que haya pasado el tiempo máximo de vencimiento del token, podrá eliminar el antiguo secreto de su lista y Cellar dejará de aceptarlo.
Cellar tiene un conjunto completo de pruebas unitarias PHPUnit: ejecútelas con bin/phpunit
. Sólo se aceptarán contribuciones que vayan acompañadas de pruebas unitarias bien estructuradas. La instalación con Composer debería brindarle todo lo que necesita para trabajar en el proyecto.
Cellar tiene copyright 2019 AMXX y está publicado bajo la licencia BSD.