если ($ referer! = "mysite.com") не является хорошим способом запретить другим сайтам жестко связывать мои изображения или swf? - PullRequest
4 голосов
/ 28 мая 2009

иногда я вижу, что изображение не обслуживается, когда браузер просматривает www.somesite.com/some_image.jpg - он скажет, что вам нужно посмотреть на изображение изнутри страницы.

(например, при использовании поиска картинок Google и просмотре некоторых результатов)

так что я думаю, что их сервер использует что-то вроде

# pseudo code
if ($referer not contain "mywebsite.com") then not serve the image / swf

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

Ответы [ 7 ]

4 голосов
/ 28 мая 2009

или даже лучше, если у вас есть доступ к файлу .htaccess, вы можете сделать следующее:

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example.com/.*$ [NC]
RewriteRule \.(gif|jpg|js|css|cur|png|jpeg)$ - [F]

или если вы хотите, чтобы они увидели другое изображение, сделайте следующее:

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example.com/.*$ [NC]
RewriteRule \.(gif|jpg)$ http://www.example.com/angryman.gif [R,L]
4 голосов
/ 28 мая 2009

Это может быть надежно, но некоторые брандмауэры удаляют это, поэтому вы должны сделать

// psuedo code
if ($referer does not contain "example.com" and $referer is set and $referer is not equal to "") then do not serve image
2 голосов
/ 28 мая 2009

Так же, как и в другом случае, я думаю, что гораздо веселее разрешить использование горячих ссылок-рефереров, пока вы не получите джокера, выполняющего тысячи запросов в день (без каких-либо реальных ссылок). Затем я перенаправил изображение на что-то полностью другое .

Вспомни Гоатса. Только противнее.

1 голос
/ 28 мая 2009

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

0 голосов
/ 28 мая 2009

похоже на Анри Уотсона, я думал о

# pseudo code
if($referer not empty and $referer not contain "mywebsite.com") then don't serve it. 

двойная проверка 3 случаев:
реферер пуст ==> обслуживается
реферер не пустой и содержит "mywebsite.com" ==> обслуживается
реферер не пустой и не contian "mywebsite.com" ==> не обслуживается

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

0 голосов
/ 28 мая 2009

Ссылочный заголовок - это просто текст, поэтому его можно подделать в запросе http. Как указано в предыдущем комментарии, вы могли бы позаботиться о подавляющем большинстве людей.

0 голосов
/ 28 мая 2009

Я бы обновил эту цифру до 99. что-то%. Почти у всех людей не будет прокси, которые мешают ссылочным строкам.

Но да, установить реферер с помощью wget (и др.) Тривиально.

...