Ваш вопрос Q состоит из двух частей, решения jeroen и anubhava работают для части I - запрет доступа / включений. Анубхава также работает для части 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 есть некоторые скрытые поля для отметки времени и проверки. Проверка может быть, скажем, первые 10 символов MD5 метки времени и некоторый внутренний секрет. После обработки отправки вы можете (i) проверить, что временная метка и проверка совпадают, и (ii) временная метка находится, скажем, в 15 минутах от текущего времени.
Это позволяет предотвратить спам, поскольку единственным практическим способом, которым спамер может получить действительную пару метка времени / проверка, является анализ формы, но этот скреб будет иметь только 15-минутную жизнь.