트로이 헌트 (Troy Hunt)는 그의 기사에서 보안 암호 재설정 기능 구축에 대해 알고 싶었던 모든 것을 지적 합니다 . 가장 관련된 발췌는 다음과 같습니다.
[T] 일반적인 두 가지 접근 방식이 있습니다.
- 서버에서 새 비밀번호를 생성하고 이메일로 전송
- 재설정 프로세스를 용이하게하는 고유 한 URL을 이메일로 전송
반대에 대한 많은 안내에도 불구하고 첫 번째 요점은 실제로 우리가 원하는 곳이 아닙니다. 이 작업의 문제점은 암호를 사용하여 언제든지 다시 사용할 수있는 영구 암호가 안전하지 않은 채널로 전송되어받은 편지함에 있음을 의미합니다.
...
그러나 계정의 악의적 인 잠금을 간단하게 막을 수 있다는 점에서 첫 번째 접근 방식에는 한 가지 큰 문제가 있습니다. 웹 사이트에서 계정을 소유 한 사람의 이메일 주소를 알고 있다면 비밀번호를 재설정하여 원할 때마다 이메일 주소를 잠글 수 있습니다. 실버 플래터에 제공되는 서비스 거부 공격입니다! 이것이 재설정자가 요청자의 권한을 성공적으로 확인한 후에 만 발생해야하는 이유입니다.
재설정 URL에 대해 이야기 할 때, 재설정 프로세스의이 특정 인스턴스에 고유 한 웹 사이트 주소에 대해 이야기합니다.
...
우리가하고 싶은 것은 재설정 URL의 일부로 전자 메일로 전송 된 다음 사용자 계정과 함께 서버의 레코드와 다시 일치시킬 수있는 고유 한 토큰을 생성하여 전자 메일 계정 소유자가 실제로 재설정하려는 사람임을 확인하는 것입니다. 암호. 예를 들어, 토큰은 "3ce7854015cd38c862cb9e14a1ae552b"일 수 있으며 리셋을 수행하는 사용자의 ID 및 토큰이 생성 된 시간과 함께 테이블에 저장됩니다 (자세한 내용은 더 자세히 설명). 이메일이 발송 될 때 "Reset /? id = 3ce7854015cd38c862cb9e14a1ae552b"와 같은 URL을 포함하고 있으며 사용자가이를로드하면 페이지에서 토큰의 존재를 확인하여 결과적으로 사용자의 신원을 확인하고 비밀번호를 허용합니다. 변경됩니다.
...
재설정 URL을 사용하여 수행하려는 다른 작업은 토큰을 시간 제한하여 특정 시간 (예 : 1 시간) 내에 재설정 프로세스를 완료해야합니다.
...
마지막으로, 이것이 일회성 프로세스인지 확인하고 싶습니다. 재설정 프로세스가 완료되면 재설정 URL이 더 이상 작동하지 않도록 토큰을 삭제해야합니다. 이전 시점과 마찬가지로, 이는 공격자가 재설정 URL을 남용 할 수있는 매우 제한된 창을 갖도록하기위한 것입니다. 또한 재설정 프로세스가 성공적으로 완료된 경우 토큰이 더 이상 필요하지 않습니다.
그는 정보 유출, 보안 문자, 2 단계 인증, 물론 암호 해싱과 같은 기본 모범 사례를 피하는 것에 대해 더 많은 지적을합니다. 본인은 Bruce Schneier의 회의에 대한 회의론을 선호하면서 보안 질문의 유용성에 대해 Troy에 동의하지 않는다는 점에 유의하는 것이 중요하다고 생각합니다 .
이 모든 질문의 요점은 백업 암호입니다. 비밀번호를 잊어 버린 경우 비밀 질문으로 신원을 확인할 수 있으므로 다른 비밀번호를 선택하거나 사이트에서 현재 비밀번호를 이메일로 보내도록 할 수 있습니다. 고객 서비스 관점에서 보면 좋은 생각입니다. 사용자는 임의의 암호보다 첫 번째 애완 동물의 이름을 잊어 버릴 가능성이 적지 만 보안이 끔찍합니다. 비밀 질문에 대한 대답은 좋은 암호보다 추측하기가 훨씬 쉽고 정보가 훨씬 더 공개적입니다.