2010-04-19 7 views
1

Есть ли у кого-нибудь предложения о том, как разрешать загрузку файлов со страниц на моем сайте и запрещать доступ, если кто-то набирает или вставляет прямой URL-адрес в браузер?Запретить прямой доступ к файлам

ответ

2

Вместо прямой ссылки на ваши файлы, обратитесь к скрипту php/asp/python/whatever, который сначала проверяет реферер. Если реферер находится в вашем домене, перенаправляйтесь к фактическому файлу.

+0

Перенаправление в файл не соответствует критериям OP. После перенаправления браузера на прямой URL пользователь имеет прямой URL-адрес и может вставлять его напрямую. Вы можете заставить скрипт обслуживать сам файл, но в этот момент вы также можете пойти с решением mod_rewrite (или IIS). – ThatBlairGuy

0

Не знаете, на каком языке вы работаете, но в .NET вы можете добавить их в папку App_Data, которая не просматривается, и написать файл пользовательского обработчика (.ashx) для извлечения файлов. Это добавляет уровень безопасности, когда ваш обработчик может выполнить некоторую проверку правил перед тем, как обслуживать файл для клиента.

1

Это зависит от вашего веб-сервера. С помощью Apache вы можете использовать mod_rewrite rules, чтобы заблокировать попытку загрузки, где HTTP_REFERER не со своего сайта. (. Я полагаю, что-то подобное существует для IIS)

Изменение пример «Заблокированные Инлайн-изображения», вы в конечном итоге с чем-то вроде этого:

RewriteCond %{HTTP_REFERER} !^http://YOUR_SITE_HERE/ALLOWED_PATH/.*$ [NC] 
RewriteRule .*\.PROTECTED_FILE_SPEC$ [F] 

Там один нюанс здесь, и это является важным. Не все браузеры отправляют заголовок HTTP_REFERER. Таким образом, эта загрузка не только будет загружена не с вашей домашней страницы, но также будет блокировать загрузку с вашего сайта, когда браузер не отправит HTTP_REFERER.

(Обратите внимание, что оригинальная версия этих правил будет разрешить загрузку, когда браузер не поддерживает HTTP_REFERER. Я изменил его на основании требования, не позволяя загрузки, когда URL будет вставлен непосредственно в браузере.)

Смежные вопросы