2010-06-12 5 views
3

저는 사용자가 계정을 만들 수있게 해주는 작은 웹 사이트를 개발하고 있지만 권한 부여와 관련하여 안전성에 관해서는 전혀 알지 못합니다.가장 안전한 방법은 사용자 인증을 어떻게 처리합니까?

나는 codeigniter를 사용하여 PHP로 프로젝트를 만들었으며 나를 위해 권한을 처리 할 수있는 라이브러리 (Tank Auth)를 발견했다. 안전한 방법으로 암호를 저장하지만 사용자가 암호를 내 서버에 보낼 때 부분에 대해 여전히 걱정됩니다.

쉽게 할 수있는 한 가지 방법은 사후 요청에서 비밀번호를 보내는 것입니다. 그런 비밀번호를 알아내는 것은 쉽습니다. 내 서버로 보내기 전에 클라이언트 측 암호로해야합니까? 그리고 거기에 어떤 좋은 자바 스크립트 라이브러리가 있습니까?

+1

여기에 고려해야합니다 한가지는 사용자가 자바 스크립트가 꺼져있는 경우이다 (가능성 인 - 노 스크립트가 훨씬 더 인기 후반의로되고있다) 그러면 데이터가 모두 잘못되었을 수 있습니다. –

+0

그게 사실이야. 결코 그것에 대해 생각조차하지 말고, 좋은 의견. – Irro

+0

그러나 정상적으로 자바 스크립트를 처리 할 수는 있습니다. 사용자 이름/암호를 보통처럼 보내고이를 사용하여 인증하십시오.물론, 덜 안전하다는 것을 의미합니다 ...하지만 JavaScript를 원하지 않는다면 할 수있는 일은 많지 않습니다. (글쎄, 플래시/자바 애플릿을 쓸 수는 있지만 ...) ... –

답변

1

클라이언트 측 해시를 사용해도되지만 일반적으로 보안 (HTTPS) 연결을 통해 자격 증명을 게시하는 것으로 충분합니다.

이것은 여전히 ​​MITM 공격의 가능성을 남겨 둡니다. 그러나 SSL 연결에서 MITM 공격을 수행하는 것은 결코 쉬운 일이 아니므로 걱정해야 할 공격 벡터가 아닙니다.

+0

좋습니다. SSL은 순수한 취미 프로젝트에 조금 비쌉니다. 제가 클라이언트와 서버간에 일반 텍스트로 암호를 보내거나 소규모 웹 사이트에서 암호를 확인해도 괜찮습니까? – Irro

+1

@Irro : 나는 계정이 정말로 중요하지 않은 웹 사이트에서만, 그리고 패스워드가 안전하지 않고 자신의 사이트에 고유 한 패스워드를 사용해야한다고 사용자에게 말한 경우에만 그렇게 할 것이다. 일부 사용자는 모든 것을 위해 동일한 암호를 사용하는 경향이 있으며, 사용자가 사용하는 가장 쉽게 쉽게 분해 할 수있는 장소만큼 안전합니다. 이러한 조건 중 하나가 거짓이고 SSL이 너무 비싸면 클라이언트 쪽 암호화가 어려워 인증에 약간의 복잡성이 추가되고 자체적 인 보안 문제가 있습니다. – Shaun

+1

네, 나쁜 보안입니다 ...하지만 취미 프로젝트 일 뿐이라면 문제가되지 않을 수도 있습니다. 내가 사용하는 취미 사이트가 SSL을 사용하지 않는다는 것을 알았을 때 나는 너무 귀찮을 것 같지 않다 (하지만 각 사이트마다 다른 비밀번호를 사용하기 때문에 대부분 그렇다). –

0

SSL을 통한 인증이 가장 쉽고 안전한 방법 일 수 있습니다.

rot13 등으로 암호화하면 쉽게 되돌릴 수 있습니다.

앞서 언급했듯이 웹 사이트의 보안이 쉽게 해제 될 수 있으므로 자바 스크립트를 사용하지 않는 것이 좋습니다.

클라이언트 측에서 수행되는 다른 모든 작업은 쉽게 손상 될 수 있습니다.

+1

클라이언트 쪽 작업이 쉽게 손상 될 수있는 것은 아닙니다. 서버가 [nonce] (http://en.wikipedia.org/wiki/Nonce)를 보내고 클라이언트가'H (')로 응답하면 (클라이언트가'H '로 응답하면) 꽤 안전한 시스템을 만드는 적절한 클라이언트 측 해시를 수행 할 수 있습니다. nonce + password)'를 선택하면 재생 공격은 불가능하며 비밀번호를 복구하기가 어렵습니다. –

+0

다른 설명에서 언급했듯이 SSL은 나에게 비싸다. 소규모 웹 페이지가 일반 텍스트로 암호를 보내면 괜찮습니까? 다른 비 SSL 웹 페이지는 어떻게 처리합니까? – Irro

+1

클라이언트와 서버 간의 대화를 듣고 있다면, nonce가있을뿐만 아니라 nonce + 암호도 출력됩니다. 그런 다음 암호를 해독 할 상대방을 참여시킬 필요가 없습니다. 내가해야 할 일은 사전 공격이나 무차별 공격을 수행하는 것 뿐이지 만 여전히 비밀번호가 있습니다. 자바 스크립트도 사용 중지하면 어떻게됩니까? 나는 인증의 안전한 방법으로 nonce를 사용하는 것을 고려하지 않습니다. – Cetra

1

SSL이 너무 비싸다고 말하면 대부분의 호스트는 무료로 제공합니다. 비싼 부분은 사설 IP 주소와 공식 인증을 얻고 있습니다.

그러나 모든 세부 사항이 안전하게 전송된다는 것을 의미하는 자체 인증서를 만들 수 있습니다. 이는 보장 할 수없는 귀하의 신원입니다. David Wolever가 언급했듯이 MITM 공격은 훨씬 더 어렵습니다. 그리고 어쨌든 취미 사이트에서는 아마 관심이 없습니다.

사이트가 취미로 진화하면 보증 된 인증서에 투자 할 수 있습니다.

2

다른 사람들이 말한 것처럼 SSL을 선호합니다. openid 가장 눈에 띄는 후보 인 - 다른 방법은 당신을 위해 인증을 처리하기 위해 외부 업체에 전적으로 의존하는 것 과정 here

의 자세한 것을 논의가있다 -

데이비드 Wotever는 해싱 metioned.

HTH

C.

+0

해싱 프로세스에 대한 좋은 토론입니다. 또한, OpenID에 +1. 아주 좋아. –

관련 문제