Q của bạn có hai phần, cả giải pháp của jeroen và anubhava đều hoạt động cho phần I - từ chối quyền truy cập / bao gồm. anubhava's cũng hoạt động cho phần II. Tôi thích cái thứ hai hơn bởi vì tôi vẫn sử dụng một cái DOCROOT/.htaccess
và điều này sẽ giữ tất cả các điều khiển như vậy trong một tệp.
Tuy nhiên, điều tôi muốn thảo luận là khái niệm "từ chối truy cập submit.php
". Nếu bạn không muốn sử dụngsubmit.php
thì tại sao lại có nó trong DOCROOT? Tôi nghi ngờ rằng câu trả lời ở đây là bạn sử dụng nó làm mục tiêu hành động trong một số biểu mẫu và chỉ muốn nó bị sa thải khi biểu mẫu được gửi và không trực tiếp, ví dụ như từ một spambot.
Nếu điều này là đúng thì bạn không thể sử dụng phần II của anubhava vì điều này sẽ khiến cho biểu mẫu của bạn bị lỗi. Những gì bạn có thể làm ở đây là (i) với .htaccess
kiểm tra để đảm bảo rằng người giới thiệu là trang chỉ mục của riêng bạn:
RewriteCond %{HTTP_REFERRER} !=HTTP://www.domain.com/index.php [NC]
RewriteRule ^submit\.php$ - [F]
Và (ii) trong trình tạo biểu mẫu index.php của bạn bao gồm một số trường ẩn cho dấu thời gian và xác thực. Việc xác nhận có thể là, 10 ký tự đầu tiên của MD5 của dấu thời gian và một số bí mật nội bộ. Khi xử lý việc gửi, sau đó bạn có thể (i) xác thực rằng dấu thời gian và xác thực khớp và (ii) dấu thời gian nằm trong khoảng 15 phút của thời gian hiện tại.
Điều này bạn có thể ngăn chặn spam vì cách thực tế duy nhất mà một người gửi thư rác có thể có được một cặp dấu thời gian / xác thực hợp lệ sẽ là phân tích một biểu mẫu, nhưng scrape này sẽ chỉ có thời gian 15 phút.