2013-09-23 2 views
7

사용자가 입력 한 사용자 이름/비밀번호를 javascript 변수에 저장하여 비 SSL로 암호화 된 사이트에서 편안한 로그인을 할 계획입니다.angularjs에 비밀번호를 안전하게 저장하는 방법

사용자가 요청할 때마다 내 앱이 먼저 서버에서 토큰을 요청한 다음 저장된 $ scope.password와 결합하여 해쉬 한 다음 유효성 검사를 위해 서버로 보냈습니다. 유효성 검증이 올 바르면 요청이 계속되고, 그렇지 않으면 중지됩니다.

또한 유효성 검증이 완료 될 때마다 서버는 유효한지 여부에 관계없이 새 토큰을 작성합니다.

내가 알고있는 바에 따르면 즉각적인 기능을 사용하면 안전 할 것이지만 angularjs를 사용할 것이기 때문에 가능하지 않다고 생각합니다. 그래서 어떻게 사용자 이름/비밀번호가 메모리가 해킹되지 않는가?

감사합니다.

+0

클라이언트 쪽에서 원시 암호를 유지하는 것은 ** 안전하지 않습니다 **. 암호를 해시의 시드로 사용하는 것처럼 보이는 문제가 있습니다. 그냥 서버에 "무작위"(즉, 사용자마다 고유 한) 시드를 묻고 클라이언트 측에 저장할 수 있습니까? – freakish

답변

2

누군가가 메모리에서 사용자 이름과 암호를 읽지 못하도록 막을 수는 없지만 서버로 보내지는 것에 어떤 노력을 할 수는 있습니다.

암호와 사용자 이름을 서버로 보낼 때 암호 해시를 시도해야합니다. 사용자 세션에 고유 한 소금을 사용하면 예측할 수 없으며 전체 트래픽의 전체 기록이 필요합니다.

이것은 절대적인 보안을 초래하지는 않지만, 다른 모든 사람이 모든 것을 읽을 수있는 기준을 높입니다.

P .: SSL을 사용하는 것이 좋습니다.

1

나는 을 정의해야한다고 생각합니다.은 "안전하게"라고합니다. 특히 방어하려는 대상을 정확히 정의하고 일반적인 공격 경로로부터 보호하지 않는 이유를 정의하십시오.

메모리 읽기로부터 물리적 장치를 보호하려는 경우 아무 것도 할 수 없으므로 운이 좋지 않습니다. 그렇습니다. 더 어렵게 만드는 방법이 있지만 궁극적으로 장치에 물리적으로 액세스 할 수있는 방법이 없으면 손실을 방지 할 수 있습니다.

중간 또는 비슷한 스타일의 공격자에 대해 이야기하고 있다면 키트에서 가장 유용한 도구 (SSL 인증서)를 무시하고 이미 분실 한 것입니다.

캐싱하고 사용자/pw로 지속적으로 다시 제출하는 사이트는 아주 나쁜 습관으로 인해 무엇을하고 있는지 전혀 모르는 사람들이 만든 사이트입니다.

관련 문제