= 도움이 당신이하고있는 것은 다소 안전 바랍니다.
나는 당신의 소금을 열쇠라고 부르겠다. 당신은 열쇠가있는 해시를 생성하고있다. 엔트로피가 충분한 키를 생성해야합니다. CSPRNG에 의해 생성 된 128 비트의 강도를 권장합니다.
이렇게 생성 된 일부 키 해시는 길이 확장 공격에 취약합니다. 즉, 공격자가 [email protected]
의 유효성 검사 토큰을 생성 한 경우 [email protected]
의 해시를 처리 할 수 있습니다. 이것은 해시 알고리즘의 출력이 해당 상태를 배제하기 때문입니다. 이를 완화하려면 HMAC algorithm을 사용할 수 있습니다.
현재 접근 방식에는 이메일 주소가 항상 동일한 토큰을 사용한다는 제한이 있습니다. 전자 메일 주소가 만료되면 (예 : Organization Organization에서 전자 메일 [email protected]
으로 해고당한 Bob Smith), 다음 Bob S가 예제 조직에서 일하기 시작할 때 얻을 인증 코드를 알게됩니다. 이것이 귀하의 신청에 대한 위험이되는지 여부는 귀하가 결정하는 것입니다. 이를 줄이기 위해 JWTs을 대신 사용할 수 있습니다. 이렇게하면 유효성을 검사 할 수있는 토큰에 만료 날짜를 넣을 수 있습니다. JWT의 HS256 알고리즘 또한 HMAC를 사용하여이 문제를 해결합니다.
키순 해시는 효율적이어야하며 데이터베이스 조회의 저장, 유지 관리 및 오버 헤드가 없습니다.
UID로 말하면 UUID입니까?
Remember that
는 :
A [UUID]의 목적은 전역 적으로 고유 한 것이어야한다 추측 할이어야한다.
및
[의 UUID]
고유성이 아닌 보안을 위해 설계된다.
엔트로피의 안전한 소스를 사용하여 즉석에서 128 비트 토큰을 생성하는 것이 좋습니다 (다른 CSPRNG). 공격자가 전자 메일 주소의 유효성을 검사 할 수 있음을 의미하는 데이터 유출 취약점을 방지하기 위해 SHA-256을 사용하여 서버 쪽에서이 항목을 해시 (소금없이)로 해시 할 수 있습니다.
각 사용자 계정마다 고유 한 임의 해시가 있어야한다고 생각합니다. 효율성은 매우 드문 사건이며 모든 경우에 자주 발생하지 않기 때문에 계정 생성과 관련하여 실제로 문제가되지 않습니다. –