2011-09-05 1 views
0

일반 해시 매개 변수가 포함 된 각 사용자에 대해 특정 (그러나 긴) 확인 링크가 포함 된 일반적인 전자 메일 확인 스크립트를 사용하여 사용자가 전자 메일을 확인해야하는 사이트가 있습니다.결과에서 명백한 패턴이없는 Base62에서 인 코드/디코드 기능을 수행하는 방법은 무엇입니까?

문제는 일부 사용자가 사용중인 장치로 인해 길고 복잡한 확인 링크에 문제가 있다는 것입니다.

그래서 각 사용자에 대해 고유 한 확인 링크를 생성하여 패턴이 분명하지 않아서 알아낼 수없고 남용되지 않도록 할 수있는 대안을 만들어야합니다.

저는 Base62 인코딩 및 디코딩을 살펴 보았습니다. 그러나 발견 된 것은 숫자에만 기반을 두었습니다.이 숫자는 순차 고유 사용자 ID를 사용하는 것으로 제한되어 있습니다. 그러면 인코딩 된 결과에 명백한 순차 패턴이 생성됩니다. 쉽게 학대 당할 수 있습니다.

가급적이면 DB를 변경하지 않아도되는 솔루션을 원합니다.

이상적으로는 기본적으로 Bit.ly 및 다른 URL 단축명이 고유 URL을 만드는 방식과 비슷한 단축 URL을 만들고 싶습니다. 그러나 사용자 ID, 사용자 이름 또는 전자 메일 중 하나를 인코딩하여 디코딩 할 수 있습니다. 바람직하게는 인코딩 된 결과에 패턴이 나타나지 않도록 유일한 키로 "암호화 된"인코딩/디코딩을 갖는다.

예 :

그래서 대신에 확인 링크의이 같은보고 : 나는 단순히 얻을 Sg5rdn를 디코딩 할 경우

http://domain.com/confirm/Sg5rdn 

:

http://domain.com/[email protected]&hash=1f3870be274f6c49b3e31a0c6728957f 

나는 모양을하고 싶습니다 사용자 이름, 사용자 ID 또는 전자 메일을 확인하고이를 확인하십시오.

이 경우에도 가능합니까?

답변

1

대신 확인 코드가있는 테이블을 만드십시오. 사용자가 확인을해야 할 때 (base62 등을 사용하여) 고유 한 코드를 작성하여 테이블에 삽입하고이를 사용자 ID에 지정하십시오.

그런 다음 사용자가 확인 링크를 클릭하면 확인 코드 테이블에서 사용자 ID 등을 가져온 다음 (코드가 있는지 확인하고 여전히 확인되지 않은 경우 등)

+0

고마워,하지만이 DB를 사용하지 않고 가능한지 확인하려고합니다. – ProgrammerGirl

+1

아니오라고 말하고 싶습니다. 물론 url 매개 변수 문자열에 사용자 이름 + id + 전자 메일을 인코딩 할 수 있지만 상당히 위험 할 수 있으며 문자열이 길어질 수 있습니다. –

0

약간의 과장된 생각이 있습니다.
정말로 할 수있는 것은 해시를 조금 줄이는 것입니다.

Sg5rdn에서 사용자 이름, 사용자 ID 및 전자 메일을 "디코딩"하는 유일한 방법은 모두 데이터베이스에서 가져 오는 것입니다.

+0

하는 데 도움이 링크를 htaccess로 그것도 짧은 만들려면 내가 원하는 것은 가능하지 않을 수도 있습니다 ... 나는 DB를 사용해야만합니다. – ProgrammerGirl

1

당신은 사용자 테이블의 열에서 코드를 저장 제안 : 매우 단축 예를 들어 테이블 : 사전 키를 생성하고 함께 저장할 계정의 사용자가 로그인 최대로

id--user---email--------------key-----confirmed----other stuff 
1 bob [email protected] 1h323f 1   ... 
2 rob [email protected] 18gg3f 0   ... 
3 steve [email protected] a862gf 1   ... 
4 tom [email protected] 17g23f 0   ... 

사용자 이름 ect

그런 다음 링크를 클릭하면 전자 메일에 대한 키를 확인한 다음 확인 된 내용을 1로 업데이트합니다. 사용할 수 있습니다.

RewriteRule ^confirm/(.*)/([a-zA-Z0-9]+)$ confirm.php?email=$1&hash=$2 [L] 

예 : HTTP가 :

희망 //domain.com/confirm/[email protected]/17g23f이 나는 느낌이 있었다

관련 문제