2012-04-07 2 views
0

OpenID를 사용하여 사용자를 로그인하는 웹 사이트가 있습니다. 내가 사용하고있는 라이브러리는 사용자 로그인시 사용자 프로필을 반환합니다.이 프로필에는 사용자의 전자 메일, 이름, 아바타에 대한 링크 및 OpenID 공급자가 반환 한 ID이 포함되어 있습니다.OpenID를 사용할 때 로그인 상태를 유지하기위한 안전한 전략

에 로그인 한 사용자를 유지하기위한 나의 전략은 이것이다 : 처음에 사용자 logges, 내가 오픈 ID의 반환 ID에 근거하는 해시 코드를 생성 할 때

  • 내가이 해시 코드를 저장 쿠키 2 개에 사용자 ID가 표시됩니다.
  • 사용자가 내 웹 사이트에 관해서, 나는이 쿠키를 확인하고 사용할 수 있다면, ID와 해시 코드를 일치하도록 시도가 정확하다면, 나는에서 사용자를 로그인합니다.

이제 문제는입니다. 어떻게 든이 쿠키 정보가 사용자로부터 도난 당하면 해커가 사용자 대신 쉽게 로그인 할 수 있습니다. 사용자가 로그인하고 사용자의 cookeis를 업데이트 할 때마다 새 해시 코드를 만들 수 있지만 다른 브라우저/컴퓨터 쿠키의 정보는 유효하지 않게됩니다.

StackOverflow 웹 사이트에서 이러한 문제가 발생하지 않으므로 로그인 전략을 보호하고 사용자를 위해 로그인 기능을 추가하려면 어떻게해야하는지 알고 싶습니다.

+0

'해시 코드'란 무엇을 의미합니까? 쿠키가 단순히 사용자의 openid URL의 보안 해시 인 경우 공격자는 처음부터 원래 쿠키를 가져 오는 문제로 이동할 필요가 없다고 추측 할 수 있습니다. –

+0

StackOverflow 웹 사이트에서이 문제가 발생하지 않는다는 것을 어떻게 알 수 있습니까? –

+0

@NickJohnson 당신 말이 맞아요.하지만 그들이 추측하기가 어렵도록 최선을 다하고 있습니다. 하지만 어쨌든 난 당신이 언급 한 임의의 세션 ID를 더 나은 솔루션이 될 것이라고 생각합니다. –

답변

2

표준적인 방법은 무의미한 세션 ID 및 쿠키로 보낼; 데이터베이스에서 사용자의 자격 증명 정보를 해당 세션 ID와 함께 저장할 수 있습니다. 사용자가 로그 아웃하면 해당 세션 ID를 무효화 할 수 있습니다.

+0

감사합니다. 이것은 쉽고 더 나은 해결책입니다. (해시 알고리즘 + 소금을 기반으로 생성하는 대신 ** 임의 ** 세션 ID 생성) –

1

클라이언트가 로그인 상태를 유지하도록하는 모든 메커니즘에 문제가 있습니까? gmail에 로그인하여 쿠키를 훔쳐 내 브라우저에 저장하면 브라우저와 브라우저를 구분할 방법이 없기 때문에 Gmail에 액세스 할 수 있습니다. 당신이 제안하고있는 종류의 공격을 막을 수있는 방법은 없습니다. (쿠키를 훔칠 수있는 바이러스 등을 컴퓨터에서 없애는 것 이외에)

+0

당신은이 전략 (쿠키가 도난 당했을 때 사용자를 위해 해시 코드를 갱신하는 방법)이 충분히 안전하다고 제안합니까? –

+0

예, 그렇게 생각합니다. 그것은 좋은 쿠키 위조를 방지합니다. (제가 작업중인 프로젝트와 비슷한 것을 구현했습니다.) 민감한 경우 자동 로그인을 사용 중지하지 않는 한 클라이언트 브라우저가 자격 증명을 도용당하는 경우 아무 것도 할 수 없습니다. –

관련 문제