Cellar é uma biblioteca leve para gerar e validar tokens assinados que podem ser usados para links de redefinição de senha, autenticação, CSRF ou qualquer outra coisa que você possa precisar. Seu objetivo é ser seguro e ter dependências externas mínimas.
Adicione Cellar ao seu compositor.json e execute composer update
para instalá-lo.
{
"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 gera tokens como uma única string no formato {random}-{expirytime}-{signature}, codificado em base64, adequado para inclusão na maioria dos lugares.
Você pode usar o algoritmo de assinatura do Cellar para verificar se alguns dados adicionais não foram adulterados. Por exemplo, você pode usar isso para incluir o endereço de e-mail ou outras informações de confirmação em uma URL, em vez de ter que armazenar um registro do mapeamento entre o token e o lado do servidor do usuário.
$ 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 .
}
É uma boa prática alternar segredos ocasionalmente - mas sem invalidar assinaturas que ainda não expiraram. Isso é feito facilmente - adicione uma opção de configuração old_secrets
com quaisquer segredos anteriores que ainda devam ser válidos. A Cellar começará a usar o novo segredo para produzir novos tokens, embora ainda aceite tokens assinados com um valor mais antigo.
Depois que o tempo máximo de expiração do token tiver passado, você poderá remover o segredo antigo da sua lista e o Cellar deixará de aceitá-lo.
Cellar possui um conjunto completo de testes de unidade PHPUnit - execute-os com bin/phpunit
. Contribuições só serão aceitas se acompanhadas de testes unitários bem estruturados. A instalação com o compositor deve fornecer tudo o que você precisa para trabalhar no projeto.
Cellar tem copyright 2019 AMXX e é lançado sob a licença BSD.