2011-09-18 2 views
0

방금 ​​웹 사이트에 OpenID 통합을 시작했습니다. 내가 본 모든 사례는 주장 된 ID를 쿠키에 저장합니다. 그것은 어떻게 안전합니까? 예를 들어OpenID : 주장 된 ID를 쿠키에 안전하게 저장하는 것이 왜 안전합니까?

는 myopenid.com는 해커가 주장 ID를 알고 있다면

그래서 그는 쉽게 계정을 해킹 할 수있는 주장 ID {사용자 이름} .myopenid.com를 반환합니다.

물론 ID를 암호화하고 인증하기 위해 사용하기 전에 ID를 암호화/md5하지만 암호없이 사용자 이름을 저장하는 것과 같습니다!

업데이트 나는 당신이 그렇게 심지어 해커가 사용자 이름을 얻는 경우에, 그는 여전히 로그인 할 때 공급자의 암호를 필요 OpenID를 제공 한 로그인 할 필요가 있음을 깨달았다 그것에 대해 더 생각 이제

내가 맞습니까?

업데이트 2 아니요, 업데이트 1이 올바르지 않습니다. :) 내 사이트는 사용자가 성공적으로 로그인했는지 여부를 확인할 수 없습니다. 내가받은 모든 것은 ID 주장이며, 사용자가 인증되었다는 것을 믿어야 만합니다. 그게 정말 혼란 스럽습니다 ...

+0

쿠키가 안전하지 않습니까? 항아리 (파일 시스템)의 뚜껑 (사용 권한)은 보통 충분합니다. 중간자에 의한 쿠키 차단에 대해 걱정한다면, 그 문제는 당신이 묻는 것과 직각입니다. 그렇지 않습니까? – bzlm

+0

@ 아이작, 지금 당장 사용하고 있습니다. 위험하다고 생각하십니까? – bzlm

+0

@bzlm : 아마 ...해야합니까? :) 하지만 진지하게, 우리는 항상 쿠키에 키 데이터를 저장하지 말라는 말을 들었습니다. 웹 사이트 환경 설정 및 챌린지 응답은 괜찮지 만 일반 텍스트 암호 또는 예를 들어 md5는 좋지 않습니다. OpenID가 중요한 데이터를 쿠키에 저장합니까? – Isaac

답변

3

사용자의 주장 된 신원을 알고있는 것이 인증하기에는 충분하지 않습니다.

실제로 사용자는 해당 ID를 사용하여 웹 사이트를 인증하기 위해 제공자에게 로그인해야합니다.

"사용자가 신뢰할 수 있음을 신뢰하는"- 아니요, 신뢰할 수 없습니다. OpenID 인증의 마지막 부분으로 인증 메시지가 공급자로부터 왔는지 확인해야합니다. 메시지가 진짜인지, 변경되지 않았는지 확인하기위한 다양한 보안 조치가 있습니다. 이렇게하면 사용자가 공급자에 의해 올바르게 인증 된 것입니다.

이제 사용자가 요청할 때마다 원하지 않으므로 세션 정보를 쿠키에 저장합니다. 그러나 요청 된 식별자 (사용자가 저장하기로 결정한 경우) 만 저장하지 않고 세션 ID (사용자가 로그인하는 순간 생성되는 의사 난수)를 저장합니다. 의사 임의이므로 아무도 추측 할 수 없으며, 그러므로 주장 된 식별자 그 자체에 대한 지식은 아무런 의미가 없다.

질문에 대한 답변을 얻으려면 선호하는 언어/프레임 워크로 세션 관리에 대해 읽어보십시오.이 메커니즘은 이러한 메커니즘을 쉽게 구현하는 방법과 작동 원리를 알려줍니다.

요약 : 암호 확인 대신 OpenID를 사용하십시오. 쿠키에 로그인 및 비밀번호를 저장할 필요는 없으며 (또는해서는 안됩니다.) 요청 된 식별자를 저장할 필요가 없습니다. 마찬가지로 매번 로그인과 암호가 일치하는지 확인하지 않지만 사용자가 세션에서 인증되었음을 기억하십시오.

관련 문제