Twoje Q składa się z dwóch części, zarówno rozwiązania jeroen, jak i anubhava działają w części I - odmowa dostępu / dołączenia. anubhava działa również w części II. Wolę to drugie, ponieważ i DOCROOT/.htaccess
tak używam a to trzyma całą taką kontrolę w jednym pliku.
Jednak to, o czym chciałem dyskutować, to koncepcja „odmowy dostępu submit.php
”. Jeśli nie chcesz używać, submit.php
to po co w ogóle mieć go w DOCROOT? Podejrzewam, że odpowiedzią tutaj jest to, że używasz go jako celu działania w niektórych formach i chcesz, aby był uruchamiany tylko wtedy, gdy formularz jest przesyłany, a nie bezpośrednio, np. Ze spambota.
Jeśli to prawda, nie możesz użyć części II anubhawy, ponieważ spowoduje to niepowodzenie twojej formy. Możesz tutaj (i) .htaccess
sprawdzić, czy stroną odsyłającą jest Twoja własna strona indeksu:
RewriteCond %{HTTP_REFERRER} !=HTTP://www.domain.com/index.php [NC]
RewriteRule ^submit\.php$ - [F]
I (ii) w swoim generatorze formularzy index.php w PHP zawiera kilka ukrytych pól dla znacznika czasu i walidacji. Walidacją może być, powiedzmy, pierwsze 10 znaków MD5 znacznika czasu i jakiś wewnętrzny sekret. Przetwarzając przesłaną wiadomość, możesz następnie (i) sprawdzić, czy znacznik czasu i walidacja są zgodne, oraz (ii) znacznik czasu znajduje się w, powiedzmy, 15 minutach od aktualnego czasu.
Możesz w ten sposób zapobiec spamowaniu, ponieważ jedynym praktycznym sposobem, w jaki spamer mógłby uzyskać poprawną parę znacznika czasu / walidacji, byłaby analiza formularza, ale ta zdrapka miałaby tylko 15 minut życia.