Ваш Q состоит из двух частей, решения jeroen и anubhava работают в части I - отказ в доступе к / includes. Анубхава также работает для второй части. Я предпочитаю последнее, потому что использую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 минут.