2009-10-26 6 views
0

나는 웹 응용 프로그램을 작성 중이며 특정 작업을 위해 대부분의 은행 웹 사이트와 유사한 OTP (One Time Pin)를 입력해야합니다.세션에 OTP를 저장하는 것이 안전합니까?

그래서 임의의 문자열을 생성하고, 어딘가에 저장하고, 사용자에게 보내고, 저장된 핀에 대해 입력 된 핀의 유효성을 검사해야합니다.

생성 된 문자열을 ASP 세션 개체에 저장하는 것이 안전합니까?

답변

0

세션은 클라이언트에서 액세스 할 수없는 서버 측 모음입니다 (쿠키/viewstate와 반대). 그것은 클라이언트 조작으로부터 자유로 워야합니다.

아직도 OTP를 데이터베이스에 저장하고 비교해야한다고 생각합니다.

+0

왜 OTP를 데이터베이스에 저장하겠습니까? 나는 단지 일할 수있는 가장 단순한 일을하고 싶다. –

+1

나는 Dokie가 이미 이것을 대답했다고 생각한다 ;-) – weismat

+0

사용자가 브라우저를 닫고 티샷을 한 후 돌아와 사명을 완료하면 어떻게 될까? 세션 변수가 유실됩니다. 그러나 이것이 정확히 원하는 것이라면 세션은 정상적으로 작동합니다. –

1

메모리 내 세션 데이터는 웹 팜의 다른 웹 서버로 전송할 수 없으므로이 사이트를 확장해야하는 경우 OTP를 웹 서버에서 분리해야 할 수 있습니다. 물론 끈적 거리는 세션을 사용하지 않는 한.

4

PIN을 저장하지 마십시오. 해시 (SHA 알고리즘 중 하나, 가능하면 소금) 해쉬를 저장하십시오. 그런 다음 사용자가 입력 한 해시를 사용자가 저장 한 해시와 비교합니다. 그런 다음 저장소 (세션 개체, 일부 데이터베이스 등)가 손상된 경우 공격자는 PIN이 무엇인지 알지 못합니다.

+0

좋은 아이디어 감사합니다. –

관련 문제