Запретить прямой доступ к файлам, кроме сервера / localhost

#apache #.htaccess

#apache #.htaccess

Вопрос:

Как вы можете запретить прямой доступ к файлам в каталоге, к которому я не хочу, чтобы пользователи обращались к нему напрямую, но разрешать доступ к серверу / localhost, потому что каталог, к которому я пытаюсь избежать прямого доступа, содержит HTML-файлы, которые выводятся / анализируются PHP.

Список каталога выглядит следующим образом:

 template
   |
   |
    --------> acp
   |           |
   |            ------> acp_index.html
   |            ------> acp_settings.html
   |
    --------> css
   |           |
   |            ------> stylesheet.css
   |
    --------> js
   |           |
   |            ------> scripts.js
   |
    ---> index.html
    ---> login.html
    ---> etc...
  

В template/acp мне нужно избегать прямого доступа к файлам, но localhost / сервер должен иметь возможность получать к ним доступ и анализировать их.

Ответ №1:

Если я правильно понимаю, вы хотите, чтобы люди не входили template/acp , в то же время позволяя серверу получать доступ к файлам?

Вы могли бы создать .htaccess и поместить его в template/acp , этот файл должен содержать слова deny from all , и просто так все, кто пытается получить файл, не смогли бы, однако сервер все равно смог бы через. php или другие языки сценариев на стороне сервера…

В php вы можете использовать такие функции, как include() или require(), чтобы включить файл в файл php и даже выполнить php-коды из включенного файла, или прочитать файл с помощью чего-то вроде fread() или file_get_contents()

Но если вы не используете какие-либо серверные скрипты, вы никак не сможете полностью избежать прямого доступа к файлам, если вам все еще нужно, чтобы пользователи могли видеть их содержимое…

Пожалуйста, обратите внимание, что .htaccess поддерживается не всеми типами веб-серверов. Apachee поддерживает это, в то время как другие, подобные lighttpd, нет.

Ответ №2:

Если вам никогда не нужен прямой доступ к этим файлам, а только синтаксический анализ с PHP, тогда удалите эти файлы из веб-каталога. Если файлы находятся вне веб-каталога (и вы не задаете какой-либо псевдонимный путь в Apache), то нет никакого способа, чтобы кто-то мог получить к ним доступ в один прекрасный день.

PHP не ограничен веб-каталогом, PHP может обращаться к файлам в /tmp, / etc / везде на вашем сервере (и это проблема на самом деле). каждый файл, который может прочитать пользователь и группа apache, может быть прочитан PHP.

Настройка PHp ограничит это, это open_basedir, если эта настройка установлена, то вы можете открыто обращаться к файлам в дереве каталогов каталога, указанного в open_basedir. Поэтому вам, возможно, придется добавить туда каталог вашего шаблона.

Возможно, вам также потребуется изменить параметр include_dir, чтобы добавить место для вашего шаблона и написать более простые инструкции include_once или require_once.