Cellar는 비밀번호 재설정 링크, 인증, CSRF 또는 기타 필요한 모든 것에 사용할 수 있는 서명된 토큰을 생성하고 검증하기 위한 경량 라이브러리입니다. 보안을 유지하고 외부 종속성을 최소화하는 것을 목표로 합니다.
작곡가.json에 Cellar를 추가하고 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는 대부분의 장소에 포함하기에 적합하도록 base64로 인코딩된 {random}-{expirytime}-{signature} 형식의 단일 문자열로 토큰을 생성합니다.
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는 저작권 2019 AMXX이며 BSD 라이센스에 따라 배포됩니다.