귀하의 Q는 jeroen과 anubhava의 솔루션이 파트 I에서 작동하여 / include에 대한 액세스를 거부하는 두 부분으로 구성됩니다. anubhava는 파트 II에도 적용됩니다. DOCROOT/.htaccess
어쨌든 사용하기 때문에 후자를 선호 하며 이것은 모든 제어를 하나의 파일로 유지합니다.
그러나 내가 논의하고 싶지 않은 것은 "접근 거부"라는 개념이다 submit.php
. 사용하지 않으려면submit.php
왜 DOCROOT에 있습니까? 여기에 대한 답변은 일부 양식에서 작업 대상으로 사용하고 스팸봇과 같이 양식이 직접 제출되지 않고 제출 될 때만 실행되기를 원한다고 생각합니다.
이것이 사실이라면 아누 바바의 파트 II를 사용할 수 없으므로 양식이 실패 할 수 있습니다. 여기서 할 수있는 일은 (i) .htaccess
리퍼러가 자신의 색인 페이지인지 확인하기 위해 확인하는 것입니다.
RewriteCond %{HTTP_REFERRER} !=HTTP://www.domain.com/index.php [NC]
RewriteRule ^submit\.php$ - [F]
그리고 (ii) PHP index.php 양식 생성기에는 타임 스탬프 및 유효성 검사를위한 숨겨진 필드가 포함되어 있습니다. 유효성 검사는 타임 스탬프의 MD5의 첫 10 자이며 일부 내부 비밀 일 수 있습니다. 제출을 처리하면 (i) 타임 스탬프와 유효성 검사가 일치하는지 검증하고 (ii) 타임 스탬프가 현재 시간의 15 분 이내인지 확인할 수 있습니다.
이렇게하면 스패머가 유효한 타임 스탬프 / 검증 쌍을 얻을 수있는 유일한 실질적인 방법으로 스팸을 방지 할 수 있지만이 스크랩은 수명이 15 분에 불과합니다.