비밀번호 찾기 기능 악용

Per

규칙을 강화하여 최악의 경우에도 사용자가 하루에 최대 6회만 리셋할 수 있도록 했습니다. 이렇게 하면 이메일 발송을 어느 정도 제한할 수 있을 것입니다.

또한 @riking 님의 조언을 따랐으며, 스크리닝된 이메일을 존중하도록 했습니다. 따라서 관리자가 IP를 차단하면 해당 IP는 더 이상 이 프로세스에 참여할 수 없습니다.

@riking 님, 여기 한 가지 큰 누락이 있는데, 자구(Self-medication)에 도움이 될 수 있는 부분입니다. “비밀번호 리셋” 이메일에는 이를 초기화한 사람의 IP 주소가 포함되어 있지 않습니다:

@codinghorror 님, 비밀번호 설정 이메일에 초기화 요청자의 IP 주소를 추가하는 것(일부러 약간 숨기는 방식도 가능)에 대해 어떻게 생각하시나요? 이렇게 하면 자구(Self-medication)가 훨씬 더 잘 이루어질 것입니다.

Jane이 공격을 받음
Jane이 12.12.12.12가 계속 비밀번호를 리셋하고 있다고 사이트 관리자에게 알림
관리자가 12.12.12.12를 차단

사람들은 여러 IP에 접근할 수 있으므로 여전히 고양이와 쥐의 게임이 될 수 있지만, 이전보다는 낫고 제한 사항이 더 엄격해졌습니다.

Facebook은 제가 구현을 어느 정도 지지하는 이 트릭을 사용합니다:

이 방식은 이메일에 IP 주소를 포함하는 것을 피할 수 있게 해줍니다. 서버 측에서 이를 추적하고 링크에는 데이터베이스의 ID만 포함됩니다. 즉, 이는 악용자를 차단하는 것이 1클릭 작업이 될 수 있음을 의미합니다.

참고로 Facebook은 비밀번호 리셋에 이메일을 요구합니다(전통적인 의미의 비밀번호 리셋 기능이 없고, 단순히 이메일을 통한 로그인만 수행합니다).

10개의 좋아요