Как запретить загрузку картинок на чужом сайте

F
На сайте с 15.11.2000
Offline
116
2518

Каким образом можно запретить загрузку картинок с моего сайта на страницах другого конкретного сайта? Я попробовал сделать это с помощью mod_rewrite, но работает через пень-колоду -- то выдает ошибку 403 при доступе к картинкам, то нормальный код 200.

Использовал в htaccess следующую конструкцию:


# Запрет на скачивание картинок наглому сайту
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$ [NC, OR]
RewriteCond %{HTTP_REFERER} ^.*sitename\.ru.*$ [NC, OR]
RewriteCond %{HTTP_HOST} ^.*sitename\.ru.*$ [NC]
RewriteRule .*\.(gif|jpg)$ - [F]

Подскажите, пожалуйста, где ошибка или что не учтено?

С уважением,

Александр Садовский.

AiK
На сайте с 27.10.2000
Offline
257
AiK
#1

Саш, разбираться лениво где ты напутал в регулярных выражениях или инструкциях mod_rewrite (мне OR не нравятся), даю готовое решение из доки:


RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www.quux-corp.de/~quux/.*$ [NC]
RewriteRule .*\.gif$ - [F]

Только обрати внимание на то, что это работает только в том случае, если был передан хоть какой-то рефферер.

В твоём варианте сторчка с HTTP_HOST выглядит параноидальной - этот параметр насколько я помню, определяет твой Apache и он просто не может быть другим.

Ближе к вечеру гляну на твой вариант подробнее.

AiK
На сайте с 27.10.2000
Offline
257
AiK
#2

О, разленился :)

Вот перевод твоего правила:

Если реферер не пуст не зависимо от регистра или

реферер начинается с моего сайта не зависимо от регистра или

хост начинается с моего сайта не зависимо от регистра

запретить доступ к картинкам.

Итого, если я пришёл с непустым реферером - запретить

Если я пришёл с твоего сайта - запретить.

Если запрос был к твоему хосту - запретить.

Т.е. правило написано с точностью до наоборот.

Предлагаю вариант:


RewriteEngine on
RewriteCond %{HTTP_REFERER} ^$ [OR]
RewriteCond %{HTTP_REFERER} !^.*sitename\.ru.*$ [NC, OR]
RewriteCond %{HTTP_HOST} !^.*sitename\.ru.*$ [NC]
RewriteRule .*\.(gif|jpg)$ - [F]

В этом случае всем кто не передал реферер или не твой реферер или обратились к другому хосту - отлуп.

Право на проверку торжественно делегируется тебе :)

F
На сайте с 15.11.2000
Offline
116
#3
Как писал AiK
Право на проверку торжественно делегируется тебе :)

Как же я не заметил восклицательный знак во второй строчке?! :) С моей машины вроде бы все работает, посмотрим по логам, у всех ли так. Спасибо!

С уважением,

Александр Садовский.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий