2017-05-07 10 views
0

해시 된 비밀번호를 다른 내 데이터의 나머지 테이블 (테이블) 같은 데이터베이스에? (다른 데이터 테이블의 많은) 다음 간체 구조 상상 예 나머지 데이터와 동일한 데이터베이스에 해시 된 비밀번호를 저장하는 것이 안전합니까?

:

authentication  user   
--------------  ----------- 
auth_id {PK}  user_id {PK} 
username   realname 
passwordhash  auth_id {FK} 

는 안전이 같은 사용자 인증/패스워드를 저장하는 것, 또는 differntly 저장되어야 어쩌면 여분의 데이터베이스에 있을까요?

답변

0

Sophos에서 this article을 검토하는 것이 좋습니다. 그 이유는 Sophos가 이론적 근거와 보안 된 디자인을 정말 잘 설명하고 있기 때문입니다.

조항에서는 별도의 암호 서버를 사용하므로 아무도 암호에 액세스 할 수 없습니다.

많은 엔터프라이즈 시스템은 암호를 다른 자격 증명에서 분리합니다.

+0

_ "일반적인 권장 사항은 별도의 암호 서버를 사용하는 것입니다."_이 주장을 뒷받침 할만한 출처가 있습니까? – 1615903

0

모두 다릅니다.

일반적으로 공격자가 하나의 데이터베이스를 읽을 수 있다면 다른 데이터베이스를 읽을 수 있기 때문에 응용 프로그램이 다른 데이터베이스에 대한 SQL 연결을 열면 큰 이점은 없습니다.

또한 데이터베이스에 액세스 할 수 있으면 사용자 이름/암호 조합을 포함하여 데이터베이스와주고받는 트래픽을 읽을 수 있습니다.

그래서 나는 별도의 데이터베이스에 인증 데이터를 저장하는 것이 보안에있어 큰 향상이 아니라는 것을 제안합니다. 키 관리와 같은 다른 보안 문제에 시간과 노력을 투자하는 것이 더 낫습니다 (해시를 소금물에 담그고 있습니까?).

하지만 물리적으로 별도의 인프라를 설정하고 프런트 엔드에 대한 서비스로서 인증 기능을 노출 할 수 있다면 OAuth, 당신은 공격자에게 중요한 장벽을 만들 것입니다. 그들은이 대체 데이터베이스를 손상시켜야 할 것이고, 통합이 프론트 엔드에 있기 때문에 데이터베이스 트래픽을 스니핑 할 수는 없습니다.