활성화 또는 비밀번호 재설정 토큰을 포함하는 링크를 만드는 가장 좋은 방법은 무엇입니까? URL은 이메일을 통해 전달되며 사용자는 계정을 활성화하거나 비밀번호를 재설정하기 위해 URL을 클릭해야합니다. 이에 스레드의 무리가 있지만 일관성있는 접근 방법이있을 나타나지 않고 각각의 접근 방식은 보안 및 개발 관점에서 모두 장점과 단점을 가지고 나타납니다활성화/비밀번호 재설정 링크를 구축하는 가장 좋은 방법
링크 매개 변수로 토큰을 포함 이 접근 방식의 쿼리 문자열
http://www.example.com/activations/:[email protected]
에서 이메일 주소, 토큰은 데이터베이스에 해시하고 이메일은 사용자를 검색하는 데 사용됩니다. 토큰은 brycpt와 같은 라이브러리를 사용하여 데이터베이스의 해시 된 버전과 비교됩니다. 그것은 쿼리 문자열에 이메일 주소와 같은 민감한 데이터를 포함하는 것 같습니다, exposes some security risks.
링크는 매개 변수 또는 쿼리 문자열로 토큰을 포함합니다.
http://www.example.com/activations/:token
이 이상적인 솔루션이 될 것처럼 보일 것입니다,하지만 난 데이터베이스에 저장된 토큰이 해시되지 않는 한 토큰을 비교하는 방법을 모르겠어요. 보안 관점에서 보면, 어떤 사람들은의 사람들이 token should be hashed이라고 주장하는 반면, 어떤 사람들은 token in the database doesn't need to be hashed이라고 주장했다. 데이터베이스에 해시 토큰을 보관한다고 가정 할 때 데이터베이스의 각 토큰을 반복하고 링크의 토큰과 비교하는 것은 많은 시간이 소요되는 것처럼 보입니다. 특히 많은 사용자가있는 앱의 경우 특히 그렇습니다. 그래서 아마도 이것에 대해서는 틀렸 겠지만이 방법을 사용하면 데이터베이스에 토큰을 저장하는 것이 필요합니다.
누구나 최선의 방법에 대한 생각이 있습니까?
답장을 보내 주셔서 감사합니다.나는 해시에 bcrypt를 사용했기 때문에 소금을 사용하지 않고 해시 할 수 있다는 사실을 알지 못했습니다! –