2011-09-01 2 views
1

사용자의 전자 메일 주소를 확인하고 있습니다.
대부분의 사람들이 말하는 방법은 db에 고유 한 토큰을 저장하고 사용자에게 전송하는 것입니다.전자 메일 확인을위한 토큰으로 "email + salt"의 해시

해시 (sha256) 이메일 주소를 sitewide salt
으로 해쉬하고 사용자에게 전송하는 중입니다.

내가 누락되었거나 충분히 확인할 수 있습니까?

+1

이메일이나 전자 메일 주소를? (사용자의 전자 메일 주소를 확인하는 것입니까?) – John

+0

전자 메일 주소 -이 정보를 사용하는 컨텍스트에 대한 자세한 정보는 – Jask

+0

입니다. 도움이 될 것입니다. 서면에 따르면 제 3자가 토큰을 포함하는 사용자에게 전자 메일을 가로 채고 스푸핑 된 보낸 사람 주소가있는 토큰을 사용하여 실제 사용자가 아닌 사용자가 확인하는 전자 메일로 회신하는 것처럼 보입니다. – hatchet

답변

1

보기 좋을 수도있는 몇 가지.

누군가 소금을 발견하면 해시를 재구성하여 시스템을 홍수시킬 수 있습니다. 이 경우 사용자가 작성중인 이메일에 사용자의 전자 메일 주소 추가를 요청했는지 확인할 수 있습니다. (즉, DB에 해시를 모두 저장하지 않아도됩니다.)

또한 소금이 같은 경우 해시는 동일한 전자 메일 주소에서 다시 요청하면 해시가 동일합니다. . 동일한 전자 메일 주소에 대해서도 요청이있을 때마다 다른 해시를 원하십니까? 해시를하기 전에 서버 날짜/시간을 전자 메일 주소에 연결할 수 있습니다.

+0

datetime을 추가하면 설정 시간이 지나면 토큰이 만료되는 데 사용할 수있는 추가 이점이 있습니다. 예를 들어 24 시간입니다. – hatchet

+0

@hatchet : 나는 거의 * 다음과 같이 썼다. :) DB에 요청 시간을 기록하여 만료일을 완료 할 수 없습니까? – John

+0

네 말이 맞아. 내가 해시 값을 일치하지 암호화/암호 해독, 생각했다. – hatchet

1

이렇게 할 수 있습니다. 아무도 서버 측 소금을 얻지 못하면 저장됩니다. 결국 이메일 확인이 필요하며 법적인 이유로이를 수행 할 필요가 없다면 더 복잡하게 만들 필요가 없습니다.

하지만 목표에 따라 다릅니다. 여분의 안전을 원하십니까? 구현하기 쉬운가? 유지 보수하기를 원하십니까? 스크립트의 실행 시간을 고려하고 있습니까?

동의어 : 이메일에 긴 링크가있을 때 매우 불쾌한 점이 있습니다. 링크를 끊는 이메일 사용자가있을 수 있습니다. 따라서 링크와 함께 코드를 추가하고 코드가 링크를 통해 완전히 전송되지 않은 경우, 사용자가 코드를 추가 할 수있는 양식이 있어야합니다.