Cellar — это легкая библиотека для создания и проверки подписанных токенов, которые можно использовать для ссылок для сброса пароля, аутентификации, CSRF или чего-то еще, что вам может понадобиться. Он стремится быть безопасным и иметь минимальные внешние зависимости.
Добавьте Cellar в ваш композитор.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
. Вклады будут приняты только в том случае, если они сопровождаются хорошо структурированными модульными тестами. Установка с помощью композитора предоставит вам все необходимое для работы над проектом.
Cellar защищен авторскими правами AMXX 2019 года и выпущен под лицензией BSD.