2017-01-25 1 views
1

사용자가 사이트에 자신을 등록에 사용자의 암호 토폴로지를 수집, 우리는 몇 가지 잘 정의 된 보안 표준을 따르안전한 방법

  • 는 소금을
  • 해시를 생성 (소금 + 비밀번호)를
  • 해시 된 암호와 소금을 DB에 저장하십시오.

최근에는 "암호 토폴로지"라는 항목이 있습니다. 예를 들어, 사용자가 Ullllldd (대문자, 소문자 5 자리, 2 자리)과 같은 암호를 생성하지 못하도록해야합니다. 침입자가 그 토폴로지에만 집중하면 무차별적인 공격을하는 것이 일반적이어서 더 쉽습니다. 이제 우리 사이트에서 사용되는 가장 일반적인 토폴로지에 관한 정보를 생성하려고합니다. 당연히 우리는 해시 된 암호 정보를 DB 내부에서 사용할 수 없으며 해시로부터 암호 정보를 복구 할 수 없습니다. 우리는 새로운 사용자가 등록 할 때마다 채워지는 토폴로지 테이블을 유지할 생각을 가지고있었습니다. 예 :

사용자 "joe"는 암호 "pass"로 등록합니다. 토폴로지 "uuuu"가 이미 존재하는지 확인합니다. 그렇지 않다면 count = 1 인 데이터베이스 테이블에 추가하십시오. 그렇다면 카운트를 1 씩 증가 시키십시오. 이것은 당연히 조금 위험합니다 : db가 손상되면 침입자가 갑자기 우리의 가장 일반적인 토폴로지를 알게됩니다!

제 질문은 : 새로운 보안 위험없이 암호 토폴로지 정보를 수집하고 저장하는 방법입니다.

답변

0

데이터베이스는 사용 된 각 토폴로지의 수이며 토폴로지에 첨부 된 사용자 ID는 저장하지 않아야합니다. 두 번째 테이블에서이 데이터베이스에 표시되는 사용자 ID를 저장하십시오.

트릭은 데이터베이스를 채우고 업데이트 할 때 발생합니다. 사용자가 암호를 변경할 때마다 암호 토폴로지 정보를 수집하고 저장하십시오. 여기서 이전 및 새로운 토폴로지를 계산하고 카운트를 감소/증가시킬 수 있습니다. 사용자가 데이터베이스에 표시되지 않은 경우 사용자를 추가하고 단순히 새 토폴로지를 개수에 추가하십시오.