(htaccess) как предотвратить прямой доступ к файлу по URL-адресу?


Это мой второй пост на ту же проблему. Потому что предыдущий пост в пример.

Ок давайте скажем еще раз, я использую Apache и у меня есть пример веб-папки (на моем Localhost), как:

В папке, файлы будут:

    .HTML-код
  • образец.jpg
  • .htaccess

индекс".формат html" будет просто включать:

<html>
<body>
    <img src="sample.jpg" />
</body>
</html>

когда я запускаю сайт в http://localhost/test/, там будет просто показывать образец изображения.jpg ' на странице.

ТОГДА ПРОБЛЕМА ЗДЕСЬ:

  • Я хочу, чтобы изображение не отображалось как http://localhost/test/sample.jpg непосредственно в строке url.

Примечание:
После одного дня получения ответов ниже, я обнаружил, что все решения логически работают, но проблема с Firefox. Я имею в виду, ниже приведены ответы предоставление решения при тестировании на каждом браузере, но не с Firefox.

4 57

4 ответа:

попробуйте следующее:

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC] 
RewriteRule \.(gif|jpg)$ - [F]

возвращает 403, если вы получаете доступ к изображениям напрямую, но позволяет им отображаться на сайте.

Примечание: возможно, что когда вы открываете какую-то страницу с изображением, а затем копируете путь этого изображения в адресную строку, вы можете увидеть это изображение, это только из-за кэша браузера, на самом деле изображение не было загружено с сервера (от Даво, полный комментарий ниже).

правило росипова работает отлично!

Я использую его на живых сайтах для отображения пустого или специального сообщения ;) вместо прямого доступа к файлам я бы предпочел немного защитить от прямого просмотра. Я думаю, что это веселее, чем 403-запрещено.

Итак, принимая правило росипова, чтобы перенаправить любой прямые запрос к файлам {gif,jpg,js,txt} в 'messageforcurious':

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.ltd [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.ltd.*$ [NC] 
RewriteRule \.(gif|jpg|js|txt)$ /messageforcurious [L]

Я рассматриваю это как вежливый способ запретить прямой доступ, скажем, к CMS разумный файлы как xml, javascript... с учетом безопасности: для всех этих ботов, которые сегодня царапают веб, мне интересно, что их algo сделает из моего "messageforcurious".

на основе ваших комментариев выглядит так, что вам нужно:

RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost/ [NC] 
RewriteRule \.(jpe?g|gif|bmp|png)$ - [F,NC]

Я проверил его на моем localhost и, кажется, работает нормально.

прежде всего, найдите, где находится основной конфигурационный файл apache httpd.conf находится. Если вы используете Debian, он должен быть здесь:/etc/apache/httpd.conf. Используя какой-либо редактор файлов, например Vim или Nano, откройте этот файл и найдите строку, которая выглядит следующим образом:

Options Includes Indexes FollowSymLinks MultiViews

затем удалите индексы word и сохраните файл. Строка должна выглядеть так:

Options Includes FollowSymLinks MultiViews

после этого перезапустите apache (например, /etc/init.D / перезапуск apache в Debian). Вот так!