Подтвердить что ты не робот

.htaccess для ограничения доступа к папке

У меня есть php файл, который наследует (включает) другие файлы PHP. Все унаследованные файлы находятся в одной папке с именем "includes". Я хочу иметь возможность ограничить прямой доступ к этой папке. Только файлы PHP на сервере могут связываться с файлами в папке "Включает". Как я могу использовать .htaccess для достижения такой цели?

FYI, я использовал следующий код, и он не работал

Order deny,allow
deny from all

Любая помощь будет оценена

4b9b3361

Ответ 1

Если у вас нет возможности фактически перемещать папку "включает" вне области "Корневая область документа" и с помощью include_path (т.е. вы не можете добраться до него из Интернета), введите

deny from all

в каталоге .htaccess в этом каталоге.

Однако альтернативой является использование директивы DEFINES, позволяющей разрешать доступ только к тем, которые включают в себя программы по определенным авторизованным файлам. Например, поместите

<?php defined('ACCESS_ALLOWED') or die('Restricted Access'); ?>

в верхней части включенных файлов, а затем поместите

<?php define('ACCESS_ALLOWED', 1); ?>

в программах, которым разрешено включать эти файлы.

Это предотвратит случайные GET для тех, которые включают в себя файлы от их запуска, и будет работать на любом веб-сервере, а не только на тех, которые поддерживают файлы htaccess.

Ответ 2

в вашем include/.htaccess:

Order deny,allow
deny from all

Ответ 3

Фактически вы можете просто использовать index.php и передать заголовок 404 с помощью header():

header('HTTP/1.1 404 Not Found', 404);

IMO, это лучше, чем 403, так как он, как и папка, не существует. Что касается включенных файлов, поместите эту строку над первой строкой include/require основного файла:

define('INCLUDED', true);

И в каждом файле в каталоге include поместите это в большинстве своем.

if (!defined(INCLUDED)) {
    header('HTTP/1.1 404 Not Found', 404);
}

Ответ 4

Вы можете запретить прямой доступ к папке, используя следующие директивы в htaccess или server.config contex:

Решение, основанное на модульном псевдониме

Redirect 403 ^/folder/.+$

Это перенаправит все файлы и директории/папку/на страницу запрещенной ошибки 403.

Модифицированное базовое решение:

RewriteEngine on

RewriteRule ^/?folder/.+$ - [F]

Ответ 5

В зависимости от возможных других параметров, установленных на более высоком уровне, вам может потребоваться использовать:

Satisfy all
Order deny,allow
Deny from all

Я столкнулся с этим, когда верхний каталог определил базовую аутентификацию, включая строку:

Satisfy any

Это мешало моему отказу от всех вступить в силу, потому что пользователи прошли аутентификацию.