запретить прямой доступ к папке и файл htaccess файл
вот сценарий:
- есть
index.php
файл в корневой папке - некоторые файлы включены в
index.php
, которые в . - 1 другой файл (
submit.php
) находится в корневой папке для отправки формы действий.
Я хочу ограничить прямой доступ пользователей к файлам в includes
папка по htaccess. также для submit.php
. Но включить будет работать .
Например, если пользователь вводит www.domain.com/includes/somepage.php
, это ограничит его (может быть перенаправление на страницу ошибки).
7 ответов:
Я бы просто переместить
includes
папка из web-root, но если вы хотите заблокировать прямой доступ ко всему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$
это покажет запрещенную ошибку для / папки / файла.php
Если я правильно понимаю, вы просто хотите запретить доступ к папке includes?
An .htaccess с директивой "запретить от всех", помещенной в папку includes, сделает трюк.
ваш Q состоит из двух частей, решения jeroen и anubhava работают для части I-отказ в доступе к /включает. также Анубхава работает для Часть II. Я предпочитаю последний, потому что я использую
DOCROOT/.htaccess
в любом случае, и это сохраняет весь такой контроль в одном файле.однако то, что я хотел обсудить, - это концепция "отказа в доступе к
submit.php
". Если вы не хотите использоватьsubmit.php
тогда почему он вообще есть в DOCROOT? Я подозреваю, что ответ здесь заключается в том, что вы используете его в качестве цели действия некоторые формы и только хотят , чтобы он был уволен, когда форма представлена, а не напрямую, например, из спамбота.если это правда, то вы не можете использовать часть 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
это мешало моему отказу от всех вступать в силу, потому что пользователи были аутентифицированы.