Я загружаю свои файлы (pdf, doc, flv и т.д.) в буфер и обслуживаю их для своих пользователей с помощью script. Мне нужен мой script, чтобы иметь доступ к файлу, но не разрешать прямой доступ к нему. Каков наилучший способ достичь этого? Должен ли я делать что-то с моими разрешениями или блокировать каталог с .htaccess?
Блокируйте прямой доступ к файлу через http, но разрешите доступ к PHP скрипт
Ответ 1
Самый безопасный способ - разместить файлы, которые вы хотите сохранить вне себя, вне корневого каталога в Интернете, как предположил Дэмиен. Это работает, потому что веб-сервер следует за привилегиями локальной файловой системы, а не своими привилегиями.
Тем не менее, существует много хостинговых компаний, которые предоставляют вам доступ к корневому веб-сайту. Чтобы по-прежнему предотвратить HTTP-запросы к файлам, поместите их в каталог самостоятельно с файлом .htaccess, который блокирует все коммуникации. Например,
Order deny,allow
Deny from all
Ваш веб-сервер и, следовательно, ваш язык на стороне сервера все равно смогут их прочитать, поскольку локальные разрешения каталога позволяют веб-серверу читать и выполнять файлы.
Приветствия.
Ответ 2
Вот как я запретил прямой доступ с URL-адресами к моим ini файлам. Вставьте следующий код в файл .htaccess
в корневой каталог. (нет необходимости создавать дополнительную папку)
<Files ~ "\.ini$">
Order allow,deny
Deny from all
</Files>
Мой settings.ini
файл находится в корне, и без этого кода доступен www.mydomain.com/settings.ini
Ответ 3
Являются ли файлы на том же сервере, что и PHP script? Если это так, просто держите файлы вне корневого веб-сайта и убедитесь, что ваш PHP скрипт имеет разрешения на чтение, где бы они ни хранились.
Ответ 4
в httpd.conf для блокировки браузера и wget-доступа для включения файлов, особенно скажем db.inc или config.inc. Обратите внимание, что вы не можете связать типы файлов в директиве, а не создавать несколько директив файлов.
<Files ~ "\.inc$">
Order allow,deny
Deny from all
</Files>
чтобы проверить конфигурацию перед перезапуском apache
service httpd configtest
затем (изящный перезапуск)
service httpd graceful
Ответ 5
Если у вас есть доступ к вам файл httpd.conf(в ubuntu он находится в каталоге /etc/apache 2), вы должны добавить те же строки, что и в файл .htaccess
в конкретном каталоге. Это (например):
ServerName YOURSERVERNAMEHERE
<Directory /var/www/>
AllowOverride None
order deny,allow
Options -Indexes FollowSymLinks
</Directory>
Сделайте это для каждого каталога, который вы хотите контролировать информацию, и у вас будет один файл в одном месте, чтобы управлять всем доступом. В приведенном выше примере я сделал это для корневого каталога, /var/www.
Эта опция может быть недоступна с использованием стороннего хостинга, особенно для общего хостинга. Но это лучший вариант, чем добавление многих файлов .htaccess
.