2011-12-16 2 views
0

사용자가 입력 한 비밀번호를 세션 상태로 저장하는 것을 고려 중입니다. 내가 알아야 할 보안 위험이나 문제점이 있습니까?세션에 비밀번호 저장

+0

이 관련 포스트를 http://stackoverflow.com/questions/4862096/is-storing-login-and-password-hash-in-session-secure-net-c-sharp –

답변

3

예. 이것은 단지 나쁜 생각입니다. 데이터베이스에 암호를 저장하면 안됩니다. 암호 대신 해시를 저장하는 것이 가장 좋습니다. 따라서 암호를 확인할 수는 있지만 누군가가 데이터베이스 (또는 자신의 경우 세션 상태)에 액세스하면 실제로는 암호가 없습니다.

+0

그러나 세션 상태를 읽어 데이터베이스에 있어야하는 것은 아니므로 더 안전하게 만들 수 있습니다. 세션 상태가 지속되지 않는 경우 암호를 세션 상태로 저장해도 괜찮습니까? – BlueMonkMN

+0

암호는 절대로 어디에도 저장되어서는 안됩니다. salt + hash 암호가 서버에 도달하자 마자 그 결과에 대해서만 작동합니다. 사용자의 원시 비밀번호를 조작 할 필요가 없습니다. –

+0

나는 그 말에 동의했지만, 나는 그것이 이상 주의적 세계라는 것을 깨닫게되었고, 나는 우리가 그 세상에 살고 있다는 것을 모른다. 웹 서버가 토큰 기반 인증을 지원하지 않는 제 3 자 구성 요소와 상호 작용해야하는 경우 비밀번호가 유일한 방법입니다. 전자 결제를 위해 사용하는 사이트는 제 3 자에게 청구서를받을 수 있도록 비밀번호를 묻습니다. 나는 누군가가 그 데이터를 보유하고 있다면 그 제 3 자에게 로그인 할 수있는 무언가를 저장하는 것으로 의심합니다. 사이트가 이상적인 인터페이스를 제공한다고 생각하지 않습니다. – BlueMonkMN

1

asp.net에는 세션 데이터를 저장할 수있는 곳이 많이 있습니다. 개발 과정에서 가장 일반적으로 사용되는 것은 InProc 또는 기본적으로 RAM 메모리입니다. 그러나 언젠가 데이터베이스와 같은 다른 세션 공급자를 사용하거나 Windows Azure 캐시를 사용하기로 결정할 수 있습니다. 암호를 일반 텍스트로 저장하면 두 경우 모두 네트워크를 통해 전송할 때 암호가 표시됩니다.

위의 시나리오에서 네트워크를 통해 전송되는 세션 데이터의 경우 전송이 https를 통해 전송되지 않는 한 일반 암호가 표시됩니다.

+0

귀하의 답변은 질문과 관련이 없습니다 –

+2

@palms 사실, olivehour의 답변은 주제에 관한 것이 었습니다. 'Session'에 패스워드를 넣으면 패스워드가 일반 텍스트로 전송 될 수 있다는 지적이있었습니다. 어떤 시점에서 외부 세션 저장 메커니즘을 사용할 수 있기 때문입니다. 나는 그것이 좋은 지적이라고 생각한다. +1 –

+0

@AndrewBarber thats 당신이 서버 사이에 안전한 채널을 사용하지 않는다면 사실 일뿐입니다. –