2012-01-04 4 views
3

이 질문은 약간 추상적 일 수 있지만 비밀번호 복구를 구현하는 가장 좋은 방법은 무엇인지 궁금합니다. 지금 당장이 코드를 구현하려고하는데, 사용하기 시작한 메소드는 다소 혼란스럽고 혼란스러워 보이며이를 수행하는 "레일스"방법이 무엇인지 알고 싶습니다. 어떤 제안?레일 - 비밀번호 복구

+0

Devise는 대부분의 패턴을 구현했으며 모양을 제공합니다. https://github.com/plataformatec/devise – clyfe

답변

6

암호는 해독되지 않도록 암호화되지 않고 일반적으로 해시 (이상적으로는 소금)가 있어야합니다. 그런 다음 나중에 사용자가 암호를 올바르게 입력했는지 확인하려면 입력 한 내용을 취하고 동일한 소금 및 해시 함수를 사용하고 데이터베이스에있는 해시와 일치하는지 확인하십시오.

이렇게 저장된 암호는 복구 할 수 없습니다. 분실 한 비밀번호는 복구에 대해 이동하는 표준 방법은 다음과 같습니다

  1. 밥 그가
  2. A "암호 토큰 재설정"누구 나타 내기 위해 자신의 이메일 주소 (사용자 이름 또는 어떤 이상)에 진입 긴 문자열 일반적으로 생성된다 문자와 숫자로 구성되며 어떤 방식 으로든 Bob과 연결된 데이터베이스에 저장됩니다.
  3. 밥 암호와 이메일, 예를 들어 (보통 URL에, 어떤 방법으로 부착 토큰을 다시 전송됩니다 http://fakesite.com/reset_password?token=long_token_generated_in_step_2.
  4. 밥 URL이 사이트가 리셋 토큰이 유효한지 확인하고 밥을 허용 방문 할 때 그는 잃어버린 암호와 같은 방식으로 해시 다음 소금에 절인 된 암호를/선택합니다.

고안, 레일에 대한 인증 보석,이 패턴을 따르는 Recoverable strategy 있습니다.

을 일부 사이트에서는 보안 검사를 추가로 적용합니다 ce 이메일은 100 % 안전하지 않습니다. 예를 들어 비밀번호 재설정 이메일을 받으려면 사용자가 비밀 질문에 답해야합니다 (일반적으로 계정을 만들 때 설정).

관련 문제