Блокируйте прямой доступ к файлу через http, но разрешите доступ к скрипту php

Я загружаю свои файлы (pdf, doc, flv и т. Д.) В буфер и обслуживаю их для своих пользователей со сценарием. Мне нужен мой сценарий, чтобы иметь доступ к файлу, но не разрешать прямой доступ к нему. Каков наилучший способ достичь этого? Должен ли я делать что-то с моими разрешениями или блокировать каталог с .htaccess?

Solutions Collecting From Web of "Блокируйте прямой доступ к файлу через http, но разрешите доступ к скрипту php"

Самый безопасный способ – разместить файлы, которые вы хотите сохранить вне себя, вне корневого каталога в Интернете, как предположил Дэмиен. Это работает, потому что веб-сервер соответствует привилегиям локальной файловой системы, а не собственным привилегиям.

Тем не менее, существует множество хостинговых компаний, которые предоставляют вам доступ к корневому веб-сайту. Чтобы по-прежнему предотвратить HTTP-запросы к файлам, поместите их в каталог самостоятельно с файлом .htaccess, который блокирует все коммуникации. Например,

Order deny,allow Deny from all 

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

Приветствия.

Таким образом я запретил прямой доступ из URL-адреса в мои ini-файлы. Вставьте следующий код в файл .htaccess на root. (нет необходимости создавать дополнительную папку)

 <Files ~ "\.ini$"> Order allow,deny Deny from all </Files> 

мой файл settings.ini находится в корне, и без этого кода доступен http://www.mydomain.com/settings.ini

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

в httpd.conf, чтобы блокировать доступ к браузерам и wget для включения файлов, особенно говорят db.inc или config.inc. Обратите внимание, что вы не можете связать типы файлов в директиве, а не создавать несколько директив файлов.

 <Files ~ "\.inc$"> Order allow,deny Deny from all </Files> 

для проверки конфигурации перед перезапуском apache

 service httpd configtest 

затем (изящный перезапуск)

 service httpd graceful 

Если у вас есть доступ к вам файл httpd.conf (в ubuntu он находится в каталоге / etc / apache2), вы должны добавить те же строки, что и в файл .htaccess в конкретном каталоге. Это (например):

 ServerName YOURSERVERNAMEHERE <Directory /var/www/> AllowOverride None order deny,allow Options -Indexes FollowSymLinks </Directory> 

Сделайте это для каждого каталога, который вы хотите контролировать информацию, и у вас будет один файл в одном месте, чтобы управлять всем доступом. Это пример выше, я сделал это для корневого каталога, / var / www.

Этот вариант может быть недоступен с аутсорсинговым хостингом, особенно с общим хостингом. Но это лучший вариант, чем добавление многих файлов .htaccess .