как запретить доступ к каталогу в файле .htaccess

#.htaccess

Вопрос:

Я пытаюсь запретить доступ к своему каталогу PDF-файлов, чтобы другие не могли получить доступ к файлам pdf в этом каталоге, попробовав что-то вроде www.example.com/pdfdir/test.pdf

Вот мой .htaccess :

 AuthType Basic
AuthName "Administrator"
AuthUserFile /home3/nimabida/public_html/power-plant/src/.htpasswd
Require valid-user
 

это нормально для отклонения другого запроса, но теперь проблема в том, что я не могу показать эти файлы на своем веб-сайте, и там тоже требуется пользователь/пароль! как я могу показать их без входа в систему?

Комментарии:

1. Хотя это возможно, вы должны спросить себя, действительно ли это хорошее решение. В общем, лучше не хранить объекты, не предназначенные для публикации http-сервером, за пределами папки, явно предназначенной для публикации. Поэтому для хранения ваших PDF-документов за пределами вашей DOCUMENT_ROOT папки для этого хоста http. Вы все еще можете публиковать эти файлы с помощью маршрутизатора запросов в логике вашего приложения. Что позволяет вам выполнять любую проверку авторизации, которую вы хотите.

Ответ №1:

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

«Лучшее», что вы можете сделать, — это проверить заголовок Referer HTTP-запроса, чтобы убедиться, что пользователь переходит по ссылке на вашем сайте, а не вводит URL напрямую (т. Е. Нет Referer ) или переходит по ссылке с сайта третьей стороны. (Но обратите внимание, что это ненадежно — см. Ниже.)

Например, в /pdfdir/.htaccess файле:

 RewriteEngine On

RewriteCond %{HTTP_REFERER} !^https?://(www.)?example.com/
RewriteRule ^ - [F]
 

Где example.com находится домен вашего сайта. Это блокирует любой запрос, который не исходит с вашего сайта. (Обычно называемая защитой «горячей линии».)

Однако это ненадежно. Решительный пользователь может легко подделать Referer заголовок, чтобы получить доступ к этим файлам, и некоторые законные пользователи могут не отправлять Referer заголовок, поэтому он будет заблокирован.

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