2014-07-22 2 views
0

나는 사용자가 확인 링크를 클릭 한 후 계정을 활성화하기 위해 PHP 스크립트를 만들었습니다. 그것은 평소와 같이 작동합니다 - 그것은 사용자를 리디렉션하지 않을 경우 사용자가 그래서 가장 좋은 것입니다PHP : 계정 활성화 스크립트를 악용으로부터 보호하십시오.

을 ./index.php하는 코드가 존재하는 경우 데이터베이스에 링크

www.example.org/activation?code=R4nD0mCoD3 

스크립트 확인을 클릭하고 사람들이 해당 사이트에 코드를 스팸으로 보내고 데이터베이스를 다운시킬 수없는 솔루션?

유용한 일주 사용자 회의가 있습니까? 슬프게도 그것에 대해 StackOverflow에서 뭔가를 찾을 수 없었습니다. :) 도와위한

감사

+1

내 머리 꼭대기에서 IP를 기록하고 사용자가 특정 시간 내에 링크에 액세스하는지 확인할 수 있습니다. – simeg

+3

코드는 코드를 스팸하거나 임의의 계정을 활성화 할 수 없도록 충분히 랜덤해야합니다 (일반적으로 활성화 링크도 만료됩니다). 또한 스팸 메일만으로도 데이터베이스가 손상되지 않아야합니다. –

+0

시간 할당을 사용하여 해치를 해시 한 다음 첫 번째/일회 사용시 삭제하십시오. IP는 변할 수 있으므로 완전히 신뢰할 수는 없습니다. –

답변

1
$key = sha1($email.time()); // 'email' or any other value 

당신에게 충분히 안전해야 40 문자 키를 줄 것이다,하지만 당신은 정말 키가 어떤 요청에 대한 선택을 방지하려면, 당신은 반환 할 수 있습니다 제출 버튼 (기본적으로 사용 중지됨)이있는보기, document.ready에서 javascript를 사용하면 대부분의 봇이 javascript를 사용할 수 없습니다.

해당 경로로 이동하면 자바 스크립트 사용 가능 로봇을 느리게하는 버튼을 사용 설정하기 전에 1 ~ 2 초의 시간 제한을 설정할 수도 있습니다.

비록 위에서 언급했듯이 가벼운 쿼리이므로 보안 활성화 키가있는 한 걱정할 필요가 없습니다.