2010-08-02 4 views
8

비밀번호없는 로그인 시스템을 만드는 가장 좋은 방법은 무엇입니까?비밀번호가없는 로그인 시스템

내가 예를 들어, 무작위로 생성 된 16 문자 토큰의 일종을 사용하여 생각 해요?

내 사이트/회원/index.php에 토큰 = 2j0n1qyjgcxyu3oy

내가 개발하고 있어요 견적 시스템과 아이디어는 공급 업체가 등록 할 필요가 없다는 것입니다. 대신 자신의 계정을 만들면 이메일에있는 링크를 클릭하면 견적을 제출할 수 있습니다. 이렇게하면 공급자가 등록이나 로그인 할 필요가 없다는 것을 알 수 있으므로 견적서를 제출하는 것이 좋습니다.

토큰을 추측해야하는 사람이 할 수있는 많은 위험은 없지만, d는 여전히 암호를 요구하지 않고 시스템을 최대한 안전하게 유지하려고합니다.

+0

유일한 안전한 방법으로 사용하고 다른 (passworded) 시스템, [액티브 디렉토리] 같은 (http://php.net/manual/en/book를 .ldap.php). 동일한 AD 도메인에있는 모든 컴퓨터를 사용하는 비즈니스에서 작동하지만 공개 웹 사이트에는 적용되지 않습니다. –

답변

5

토큰이 괜찮 으면 MD5 또는 SHA1 해시를 사용합니다.

하지만 당신이 알고있는 것처럼, 이것은 당신이 알고있는 것처럼 패킷 스니퍼 (sniffer)가 특히 전자 메일을 통해 스니핑 할 수 있으므로 잘 알고 있습니다. 그러나 이것이 문제가되지 않는다면 공급자를 위해 토큰을 사용할 때 문제가 발생하지 않습니다. 냄새를 맡거나 학대를 당하면 단순히 토큰을 새로 생성하십시오.

희망이 있습니다.

+0

토큰이 MD5 여야한다는 것을 의미합니까, 아니면 토큰을 데이터베이스에 저장된 토큰의 MD5 버전과 비교해야합니까? – GSTAR

+0

토큰 자체는 "필수"가 아닌 MD5가 될 것이지만 그것은 내가 선호하는 것입니다. –

+0

쿠키가 재설정되면 사용자는 모든 계정 정보를 영원히 잃게됩니다. –

1

글쎄 토큰이 암호 같지 않습니까? 또한 특정 사이트로 리다이렉트하여 메일에서 특정 버튼을 클릭하여 신원을 확인하거나 메일에서 핀을 입력하도록 할 수 있으므로 각 중요 데이터를 모두 보내지 않도록 할 수 있습니다. GET하지만 POST (공공 장소에서 중요한)

희망에 따라 나는 꽤 일반적인 접근 방식이다

2

을 도울 수 있습니다. 트릭은 토큰이 고유한지 확인하는 것입니다. 나는 과거에 GUID 값을 사용했습니다.

모든 것이 위험과 보상의 관계입니다.

다른 사람이 해당 토큰을 사용하여 시스템에 액세스 할 수있는 위험은 무엇입니까? 일반 텍스트 전자 메일을 통해 전송되므로 위험이 보통 일 수 있습니다. (공격자는 네트워크에서 또는 사용자와 전자 메일 호스트를 청취해야합니다. 여전히 쉽지는 않습니다.)

보상금은 무엇입니까? 공격자는 회사 이름에 견적을 제출할 수 있습니다. 얼마나 나빴 니? 그건 너에게 달렸어.

내가 볼 수있는 또 다른 위험은 회사에서 견적을 제출 한 후 나중에 명예를 훼손하기로 결정한 경우입니다. 그들은 단지 제출하지 않았다고 말할 수 있습니다. 다른 사람이 자신의 이름으로 그렇게 했어야합니다. 다시 말하지만,이 가능성은별로 높지 않으며 다른 방법으로 처리 될 수 있습니다.

0

일일 이메일을받는 경우 각 링크마다 별도의 고유 ID를 생성 할 수 있습니다. 특정 기간 후에 만료 시키거나 x 일마다 전자 메일을 통해 업데이트를 제공하십시오.

누군가가 ID를 추측하거나 누군가를 얻는다면 얼마나 큰 거래가 있습니까?

또한 왜 16 문자입니까? 그들은 타이핑 할 필요가 없기 때문에 더 길게 만들지 않겠습니까?

의사

$urlToken = md5(reverse(md5($key)) . md5(right(md5(key), 16) . left(md5(key),16)); 

64 문자 토큰을 만들겠습니까.

당신은 UUID 시도 할 수
+0

PHP에는 역/우/좌 메소드가 포함되어 있습니까? 또한 캐릭터 수를 늘리는 것에 동의합니다. 16 자로 생성 된 동일한 토큰을 얻지 못할 가능성은 매우 적습니다. 64 자로 동일한 토큰을 얻지 못할 가능성은 매우 희박합니다! – GSTAR

+0

PHP에서는 md5 (substr (md5 ($ key), 16). substr (md5 ($ key), 0, 16)). MySQL을 사용하는 경우 "select uuid()"를 사용할 수도 있습니다.이 옵션은 데이터베이스 수준에서 전역 고유 ID를 얻도록합니다. – Derrick

0

: 인증

<?php 

$uuid = `uuidgen`; 

echo $uuid; 

?>