2010-12-23 6 views
1

나는 이름, 전자 메일, 암호 해시, 성별, 도시, 교육 등과 같은 모든 사용자 세부 정보가있는 사용자 테이블을 보유하고 있습니다.사용자 세부 정보 테이블의 사용자 인증 세부 정보 또는 별도의 정보?

질문 : 나는 이것을 user_id, email, password_hash, password_salt 인 두 개의 테이블로 정규화해야 하는가?

두 번째 테이블에 사용자 정보가 저장되어 있거나 두 테이블 모두 1 개의 테이블에 가지고 있어도됩니까? 나는 이것이 중요한 시스템이고 성능이 매우 중요하므로 조인을 낮게 유지해야하기 때문에 사용자 세부 사항을 너무 많이 표준화 할 수 없습니다.

더 나은 보안을 위해 로그인 인증에 사용되는 사용자 비밀번호/전자 메일이 별도의 테이블에 있어야하는지 아닌지 걱정됩니까?

+0

별도의 테이블 보안이 어떻게 향상됩니까? "별개"== "더 좋게"한다고 생각하게하는 이유는 무엇입니까? 이걸 어디서 읽었 니? –

+2

"암호 해시"- 인터넷의 일반 사용자로서이 점에 감사드립니다. 자주 묻는 사람이 일반 텍스트 암호 저장을 나타내는 코드를 제공하는 곳에서 인증 관련 질문을 볼 수 있습니다. 당신은 실제로 내 오후를 너무 밝게했습니다. 고맙습니다. – David

+0

아니요, 실생활의 경험에서 읽을 수는 없지만, 당신은 평범한 물건에 슈퍼 비밀 물건을 저장하지 마십시오. 그들은 별도로 저장됩니다. 내 비밀 파일이 은행 사물함에있을거야. 내 개인 파일이 내 집에있을 수 있습니다. 그래서 테이블을 깨뜨린 다음 인증 테이블을 보호하는 데 필요한 다른 것을 확인했습니다. – june

답변

0

Symfony의 sfGuard는 인증 데이터 용 테이블과 사용자 세부 정보 용 테이블의 두 가지 테이블을 사용합니다. 이는 서로 다른 두 세트의 데이터를 분리하고 사용자 인증 테이블이 좁기 때문에 메모리 (및 다양한 캐시)에 더 잘 맞으며 (더 넓은) 사용자 세부 정보로 작동 할 필요가 없습니다 인증이 필요할 때마다

보안 측면에서 볼 때 백업 저장소 요구 사항을 제외하고 한 테이블과 두 테이블의 차이는 실제로 볼 수 없습니다.

항상 이와 같이 스택을 측정하여 비교하려면 특정 상황을 참조하십시오.

1

테이블이 매우 다른 방식으로 구현되지 않는 한 두 테이블은 본질적으로 한 테이블에 대한 추가 보안을 제공하지 않습니다. 예를 들어 서로 다른 하드웨어로 파티션이 나누어 져 있고 암호 테이블에는 기본 디스크 암호화가 있거나 이와 비슷한 것이 있습니다. 그리고 심지어 우리는 다른 형태의 "보안"에 대해서 이야기하고 있습니다. 두 테이블 모두 아직 사용 중이며 사용 중이면 나머지 테이블은 암호화됩니다. (다른 예가있을 수 있지만, 지금 당장 생각할 수있는 전부입니다.) 개인적으로, 나는 보안 관점이 아닌 두 관점의 관점을 사용하는 경향이 있습니다. 하나는 인증이고, 하나는 사용자 프로파일입니다. 대다수의 경우에는 별개 일 필요는 없지만 논리적으로 동일한 것이 아니기 때문에 별도로 사용해야하는 논리 변경이 필요한 경우에만 별도로 유지하는 것이 좋습니다.