запретить прямой доступ к папке и файл htaccess файл
вот сценарий:
- есть
index.php
файл в корневой папке - некоторые файлы включены в
index.php
, которые в . - 1 другой файл (
submit.php
) находится в корневой папке для отправки формы действий.
Я хочу ограничить прямой доступ пользователей к файлам в includes
папка htaccess. также для submit.php
. Но включить будет работать .
Например, если пользователь вводит www.domain.com/includes/somepage.php
, это ограничит его (может быть перенаправлен на страницу с ошибкой).
7 ответов
Я бы просто переместить includes
папка из веб-корня, но если вы хотите заблокировать прямой доступ ко всему includes
папка, вы можете поставить .htaccess
файл в этой папке, которая содержит только:
deny from all
таким образом, вы не можете открыть файл из этой папки, но вы можете включить их в php без каких-либо проблем.
Это чисто mod_rewrite
решение:
RewriteRule ^(includes/|submit\.php) - [F,L,NC]
это покажет запрещенную ошибку для использования, если URI содержит либо /includes/
или /submit.php
можно использовать директиву Files и запретить доступ ко всем файлам, а затем использовать ее снова, чтобы установить доступные файлы:
<Files ~ "^.*">
Deny from all
</Files>
<Files ~ "^index\.php|css|js|.*\.png|.*\.jpg|.*\.gif">
Allow from all
</Files>
1 liner mod_alias решение на основе:
RedirectMatch 403 ^/folder/file.php$
Это покажет запрещенную ошибку для / folder / file.в PHP
Если я правильно понимаю, вы просто хотите запретить доступ к папке includes?
An .htaccess с директивой "DENY FROM ALL", помещенной в папку includes, сделает трюк.
ваш Q состоит из двух частей, оба решения jeroen и anubhava работают для части I-отказ в доступе к /включает. Анубхава также работает для части II. Я предпочитаю последнее, потому что я использую DOCROOT/.htaccess
в любом случае, и это сохраняет весь такой контроль в одном файле.
однако то, что я хотел обсудить, - это концепция " отказа в доступе к submit.php
". Если вы не хотите использовать submit.php
тогда почему он вообще в DOCROOT? Я подозреваю, что ответ здесь заключается в том, что вы используете его в качестве цели действия в некоторые формы и только хотят , чтобы он был уволен, когда форма представлена, а не напрямую, например, из spambot.
если это правда, то вы не можете использовать часть II анубхавы, так как это приведет к сбою вашей формы.
Что вы можете сделать здесь (я) с .htaccess
проверьте, чтобы реферер был вашей собственной индексной страницей:
RewriteCond %{HTTP_REFERRER} !=HTTP://www.domain.com/index.php [NC]
RewriteRule ^submit\.php$ - [F]
и (ii) в вашем индексе PHP.PHP form generator включает некоторые скрытые поля для метки времени и проверки. Проверка может быть, скажем, первой 10 символов MD5 метки времени и некоторого внутреннего секрета. При обработке отправки вы можете (i) проверить, что метка времени и проверка совпадают, и (ii) метка времени находится в пределах, скажем, 15 минут текущего времени.
Это вы можете предотвратить спам как единственный практический способ, которым спамер может получить действительную пару отметок времени / проверки, - это проанализировать форму, но эта царапина будет иметь только 15-минутную жизнь.
в зависимости от возможных других параметров, установленных на более высоком уровне, вам может потребоваться поместить следующее.файл htaccess в папке includes:
Satisfy all
Order deny,allow
Deny from all
я столкнулся с этим, когда верхний каталог определил базовую аутентификацию, включая строку:
Satisfy any
это мешало моему отказу от всех вступать в силу, потому что пользователи были аутентифицированы.