문제

재설정 암호 토큰을 구성하는 방법에 대한 모범 사례는 무엇입니까?나는 생각하고있다 :

임의 17 자 [A-ZA-Z0-9] + 전역 적으로 고유 한 ID + 임의 17 자 [A-ZA-Z0-9].

더 나은 솔루션 또는 재설정 암호 토큰에 업계 표준이 있습니까?

도움이 되었습니까?

해결책

고려해야 할 중요한 점이 있습니다.

  1. 코드는 실제로 무작위로되어야합니다 (mcrypt_dev_urandom에서 읽어야합니다). 다른 사용자 관련 정보로부터 비해서는 안됩니다.
  2. 이상적으로 코드는 URL의 문제를 피하기 위해 A-Z A-Z 0-9로서 A-Z A-Z 0-9입니다.
  3. 저장소 만 데이터베이스의 토큰의 해시 은 데이터베이스에 대한 읽기 액세스가있는 공격자가 모든 계정을 재설정 할 수 있습니다.
  4. 사용자가 링크를 클릭 한 후에 데이터베이스에서 토큰의 해시를 찾아야하는 문제가 발생합니다. 토큰을 저장할 수있는 두 가지 방법이 있습니다.

    • 소금이없는 SHA512와 같은 해시 알고리즘이있는 토큰을 해시합니다. 토큰이 매우 강하면 (0-9 A-Z A-Z가있는 최소 길이 20)이면이 옵션이 안전합니다. 이론적으로 데이터베이스에 입력하기 전에 해시가 이미 존재하는지 여부를 확인해야합니다. 실제로 이것은 무시할 수 있습니다. 이러한 토큰을 처리 할 수있는 암호 재설정 클래스
    • 를 구현했습니다.
    • BCrypt와 소금이있는 토큰을 해시합니다. 이렇게하면 짧은 토큰이 가능하지만 데이터베이스에서 해시 처리 된 토큰을 검색 할 수 없습니다. 대신 토큰을 찾기 위해 링크에 ROW-ID를 포함시켜야합니다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top