2013-01-11 5 views
1

현재 웹 응용 프로그램 사용자를위한 암호 복구 방법에 대해 걱정하고 있습니다.좋은 암호 복구 방법

하나의 아이디어는 복구 URL이있는 전자 메일을 사용하고 사용자에게 사용자 이름을 묻는 것입니다. 그러나 잊어 버린 경우 전자 메일 주소를 요청하십시오.

또 다른 아이디어는 "비밀 질문"을 사용하고 암호를 사용자에게 보내는 것입니다.

비밀 번호 복구를위한 다른 옵션을 알고 있습니까? 사용자 좌절 외에 "잘못된 비밀번호 제한"이 있다는 단점이 있습니까?

EDIT : 어제 일부 고객이 업데이트하여 사용하는 일부 이전 버전에서는 전자 메일 주소 나 사용자 이름이 고유하지 않아야한다고 들었습니다.

저는 완전히 당황했습니다. 내 마음에 오는 유일한 것은 처음 로그인 한 후 사용자가 선택할 수있는 비밀 질문을 사용하는 것입니다. 그러나 전자 메일을 보내는 대신 "새 암호 대화 상자"를 직접 엽니 다.

아이디어가 더 있으십니까?

+2

나는 임의의 해시를 생성하여 사용자에게 보냈다는 생각을 갖고 있으며, 아마도 비밀 질문과 결합되어있을 수 있습니다. 해시가 너무 짧지 않아야하며, 특수 문자가 포함되어야합니다. 같은! []? – eandersson

+0

@DominikG 와우, 그 편집으로 상황이 더욱 까다로워집니다 ... 데이터베이스에 이메일 충돌이 몇 개 있는지 (존재하는 경우)의 감각이 있습니까? 사용자가 처음 로그인 한 후 비밀 질문을 설정하도록 요청하는 대신 전자 메일 고유성 검사를 수행하고 고유성 검사가 실패 할 경우 다른 전자 메일 주소를 제공하지 않는 이유는 무엇입니까? – mikemxm

+0

여기에서 문제는 많은 사용자가 [email protected]과 같은 전자 메일 주소를 사용하며 고객의 요구 사항이라는 것입니다. 모든 동일한 "동일한 사용자 이름"이 실제로 동일한 사람이므로 동일한 사용자 이름의 문제는 매우 적습니다. –

답변

2

내 의견 : 사용자의 이메일 주소가 등록 된 모든 사용자 중에서 고유해야한다고 가정하면 비밀번호 복구 페이지에서 사용자의 이메일 주소를 묻습니다. "사용자 이름 또는 전자 메일 주소"로 지정할 수는 있지만, 약간의 비틀기만으로도 충분한 백엔드 처리를 정당화 할 수있을만큼 충분한 사용자 수는 없을 것이라고 생각합니다.

보안 강화를 위해 사용자 이름이나 이메일 주소가 데이터베이스에서 발견되었는지 확인하거나 거부하지 마십시오.

비밀번호 재설정 링크가있는 이메일은 정상적으로 작동합니다. 해시를 사용하면 해커가 재설정 링크를 쉽게 추측 할 수 없으므로 더 길면 좋습니다 (20 자 이상). 보안을 강화하려면 리셋 링크가 더 이상 작동하지 않을 시간 제한을 지정하십시오.

사용자가 링크를 클릭하고 새 암호를 선택하면 자동으로 계정에 로그인하지 마십시오. 처음부터 로그인하도록하십시오. 이렇게하면 새 비밀번호를 알고 있는지 확인하고 해커가 계정에 직접 로그인 할 수 있도록 비밀번호 복구 코드의 버그 가능성을 줄입니다.

사용자에게 스팸 폴더를 확인하고 리셋 링크를 받아야한다고 생각할 수있는 시간의 창을 제공합니다 (사용자가 불만을 제기하기 전에 기다리는 시간을 알 수 있도록).

보안 질문은 대개 잘못된 아이디어입니다. 첫째로, 사용자는 자신의 대답이 무엇인지 기억하기 위해 애 쓰고 있습니다. 이는 사용자의 암호에 무언가를 추가하는 것과 같지만 세상에는 그 여분의 부분이 무엇인지에 대한 힌트를 제공합니다. 대답은 대소 문자를 구분하지 않고 영문자 또는 영숫자로만 해석됩니다.

암호 복구 시스템이 작동하지 않는 경우 사용자가 연락 할 수있는 방법을 포함시켜야합니다. 그래도 Social Engineering 해킹의 길일 수 있으므로주의하시기 바랍니다.

암호 제한은 사용자에게 불편할 수 있습니다. 이것을 구현하고, 시도 할 수있는 횟수와, 그 한도를 초과하는 결과에 대해 길고 열심히 생각하십시오. 대부분의 사람들은 단일 암호의 변형을 가지고 있습니다. 이제는 보안 관점에서 볼 때 현명한 것은 아니지만 실제로 발생합니다. 합리적으로 행동하는 사용자는 1 분 안에 hooper2012, Hooper2012, hooper20121, Hooper20121을 시도 할 수 있습니다.

아마도 5 번 실패한 시도가 사용자가 앞으로 시도 할 때까지 60 초를 기다릴 수 있습니다. 추가로 5 회 실패하면 120 초에서 2 배로 증가합니다. 5 회 실패 할 때마다 대기 기간을 두 배로 늘리십시오. 말하자면 50 회 연속 시도가 실패 할 때까지 계속 그렇게하면 50 회 시도를 소모하는 데 걸리는 최소 시간은 1 day 18 hours and 35 minutes입니다. 하루에 12 회 이상 실패한 시도가있는 계정을 알려주는 코드를 사용하는 것이 좋습니다.

50 회 연속 실패하면 계정이 일시적으로 비활성화되고 사용자가 기술 지원부에 문의해야합니다. 다시 말하지만, 사회 공학에주의하십시오.

사용자가 올바른 로그인 자격 증명을 제공하면 대기 기간을 0으로 재설정합니다.

+0

위의 편집을 참조하십시오. –

관련 문제