나는 회사에 대한 문의 양식을 만들고 있으므로 가능한 한 스팸 방지로 만들고 싶습니다. 나는 honey pot + session checking을 만들었지 만, 매 x 분마다 한 번만 폼을 제출할 수 있도록 만들고 싶다. 즉, IP를 x 시간 동안 양식 사용을 금지합니다.일시적으로 IP를 금지하는 PHP
이 작업을 수행하는 가장 좋은 해결책은 무엇입니까?
나는 약간을 생각할 수 있지만 그 중 어느 것도 이상적인 것 같지 않습니다.
나는 회사에 대한 문의 양식을 만들고 있으므로 가능한 한 스팸 방지로 만들고 싶습니다. 나는 honey pot + session checking을 만들었지 만, 매 x 분마다 한 번만 폼을 제출할 수 있도록 만들고 싶다. 즉, IP를 x 시간 동안 양식 사용을 금지합니다.일시적으로 IP를 금지하는 PHP
이 작업을 수행하는 가장 좋은 해결책은 무엇입니까?
나는 약간을 생각할 수 있지만 그 중 어느 것도 이상적인 것 같지 않습니다.
양식이 제출 될 때마다 사용자 IP를 시간 소인과 함 2 저장하십시오. 사용자가 양식을 제출하면 먼저 데이터베이스를 확인하여 해당 기간 내에 제출했는지 확인하십시오.
사용자가 동일한 IP를 사용할 수있는 대규모 네트워크에서 일부 문제가 발생할 수 있습니다. 정말 대상 고객에 따라 다릅니다.
데이터베이스. 거기에 IP를 저장하고 타임 스탬프를 작성하십시오.
일부 블로그에서 사용되는 멋진 접근 방식은 봇을 보호하기 위해 JavaScript를 사용하는 것입니다. onsubmit() 이벤트에서와 마찬가지로 양식의 메소드를 GET에서 POST로 변경하십시오. 당신은 다른 마술도 할 수 있습니다. 봇은 JavaScript를 실행하는 데 아주 적합하므로 유용하게 사용할 수 있습니다.
다른 한편으로는 - 이로 인해 JavaScript가 활성화되지 않은 사용자의 0.0000001 %가 아플 수 있습니다. 글쎄, 너의 선택. :) 당신은 (내가 가정 봇 일명 일부 "브라우저"를 제거) 쿠키 가능 브라우저에 양식을 제한 괜찮다면
것은,이 같은 것을 할 수있는 :
양식 페이지가로드, 그것은으로 확인 타임 스탬프가있는 세션 변수 아무 것도 발견되지 않으면 하나를 생성하고 동일한 페이지로 리다이렉트하지만 "action = start"또는 뭔가를 지정하는 GET 매개 변수를 사용합니다. 따라서 두 번째로드에서 $ _GET [ 'action'] == 'start'가 표시되면 해당 세션 변수를 확인할 수 있습니다. 쿠키를 찾지 못하면 쿠키가 필요하다는 다른 곳으로 리디렉션 할 수 있습니다.
이제 타임 스탬프를 확인하고 너무 빨리 지나친 경우 다른 작업을 수행 할 수 있습니다.
이 방법을 사용하면 방화벽 뒤에있는 많은 수의 사람들을 상대 할 때 전체 그룹을 차단할 필요가 없기 때문에 최소한 동일한 IP를 허용합니다.
데이터베이스를 사용하면 아무 것도 허용 할 필요가 없으므로 데이터를 기록하기 때문에 최선의 방법 일 수 있습니다. 유일한 문제는 IP를 마스킹하거나 여러 곳에서 공격 할 수 있다는 것입니다. 나는 그들의 세션/쿠키에서 데이터베이스와의 상호 참조를 시도 할 것이다. 같은 사람이 똑같은 IP 주소에서 정말 빨리 귀하의 사이트를 때리는 것은 분명하지만, 당신은뿐만 아니라 사용자가 그들이 빠르게 IP 주소를 전환하는지 볼 수 있습니다 ID를 만듭니다.
어떤 종류의 cron 스크립트 (또는 적어도 작성된 도구와 대기중인 도구)를 통해 처리 할 수있는 엉망을 정리할 준비가되어 있어도 괜찮습니다. 내 사이트의 경우 매우 작은 시간대 (10 초 이내) 내에 여러 개의 ips에서 정확하게 동일한 제출물을 플래그로 표시하고 있습니다.
최소한 질문 양식을 제출하여 질문 양식을 제출할 수 있습니다.
그 사람들을 조종 해 좋은 팁. – zuk1
여기서 0.0000001 % = 6 % http://www.thecounter.com/stats/2009/July/javas.php –
내 사이트의 장바구니는 JS가없는 사람도 일하지 않으므로 누가 신경 써야합니까. – zuk1