기존 사용자 기반으로 기존 응용 프로그램을 유지 관리합니다. 시간이 지남에 따라 현재 암호 해싱 기술이 오래되어 업그레이드해야한다고 결정됩니다. 또한 UX 이유로 인해 기존 사용자가 자신의 비밀번호를 강제로 업데이트하는 것을 원하지 않습니다. 전체 비밀번호 해싱 업데이트는 화면 뒤에서 수행해야합니다.
다음을 포함하는 사용자를위한 '단순한'데이터베이스 모델을 가정하십시오.
- 신분증
- 이메일
- 암호
그러한 요구 사항을 해결하는 방법은 무엇입니까?
나의 현재 생각은 :
- 적절한 클래스에서 새로운 해싱 메소드를 생성
- 추가 비밀번호 필드를 보유하도록 데이터베이스의 사용자 테이블을 업데이트하십시오.
- 사용자가 오래된 비밀번호 해시를 사용하여 로그인하면 업데이트 된 해시로 두 번째 비밀번호 필드를 채 웁니다.
이로 인해 암호 해시를 업데이트하지 않은 사용자와 암호 해시를 업데이트하지 않은 사용자를 합리적으로 구별 할 수 없다는 문제가 생겨서 둘 다 확인해야합니다. 이것은 끔찍한 결함이있는 것 같습니다.
또한 이것은 기본적으로 모든 단일 사용자가 비밀번호를 업데이트 할 때까지 이전 해싱 기술을 무기한으로 유지할 수 있음을 의미합니다. 그 순간에만 이전 해싱 확인을 제거하고 불필요한 데이터베이스 필드를 제거 할 수 있습니다.
현재 '솔루션'이 더럽고 불완전하고 그렇지 않은 것이기 때문에 주로 몇 가지 디자인 팁을 찾고 있습니다.하지만 가능한 솔루션을 설명하기 위해 실제 코드가 필요한 경우 모든 언어를 자유롭게 사용하십시오.