Перейти к содержимому

Сервис обмена электронных валют


Защита изображения

#1 psiallon

psiallon
  • Пользователь
  • 14 сообщений
  • Репутация: 0
0

Отправлено 16 Август 2009 - 06:45

Здравствуйте уважаемые коллеги.
Имеется PHP-скрипт, который генерирует JPG-изображение и отдает его клиенту, т.е. что-то вроде такого (для примера):
<?php
HEADER('Content-type: image/jpg');

// Пустое изображение
$img = imagecreatetruecolor(150, 150);

// Заливаем изображение
$backgroundColor = imagecolorallocate($img, 0, 0, 255);
imagefill($image, 0, 0, $backgroundColor);

// Рисуем окружность
$ellipseColor = imagecolorallocate($img, 255, 0, 0);
imageellipse($img, 75, 75, 140, 140, $ellipseColor);

// Выводим изображение
imagejpeg($img);
?>

Естественно в скрипт передаются параметры, и алгоритм генерации изображения более сложный и имеет смысл, но это не суть важно.
Так вот, мне хотелось бы узнать, как можно защитить изображения от вставки их на сторонние сайты, т.е. что бы сайты, которые добавляют себе код вроде этого:
<img src="http://mysite.ru/generate.php" />

не получали должного результата.

 

 

  • 0

#2 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 17 Август 2009 - 14:44

Запрет выдачи картинок чужим сайтам.[/size]

Довольно нередким явлением является то, что недобросовестные модераторы и ведущие рубрик различных сайтов да и некоторые блоггеры, в целях экономии трафика, вместо того чтобы сослаться на понравившиеся картинки или хотя бы пересохранить их у себя на сервере, просто тянут их к себе прямо с вашего сайта, или как говорится ”личат”.

Как понимаете, ничего хорошего для вас, как владельца сайта с которого и тянуться напрямую картинки на чужой сайт - нет! И узнаете Вы об этом пожалуй только по резко возросшему трафику или по количеству обращений к файлу, которое не соответствует количеству посетителей. А так как, в наше время трафик стоит денег и немалых, то отдавать просто так его на сторону неприятно, да и злостных личеров стоит наказать. Поэтому нужно что-то делать, к счатью на большинстве нормальных хостингов есть возможность пользоваться файлом .htaccess, вот с его помощью и будем решать проблему.

Можно прописать правило в файле .htaccess. Причем это можно сделать как для конкретного сайта, так и для всех, оставив к примеру только несколько разрешенных, таких как Google Images или картинки Яндекса. Итак...

Способ первый, закрываем кран подачи кислорода для всех

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?вашсайт\.ru/ [nc]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?google\.com/ [nc] - доступ Гуглю открыт
RewriteRule .*\.(gif|jpg|png)$ http://вашсайт.ru/images/hotlinkers.jpg [nc]
RewriteRule \.(jpe?g|gif|png)$ - [F] - эту строчку можно подставить вместо последней, чтобы перенаправлять на 403 Forbidden вместо картинки.
Что собственно происходит? Когда к серверу идет запрос на файл с расширением (gif|jpg|png), и этот запрос не с вашего сайта, то запрашиватель отправляется прямиком к картинке httр://вашсайт.ru/images/hotlinkers.jpg, которая может быть расположена по вашему усмотрению и на ней может быть все что угодно. Такой способ быстро отбивает охоту личить ваши картинки.

Способ второй, режем особо усердных пожирателей трафика.

RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http://(www\.)?zloylicher\.net/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(www\.)?esheodin\.com/ [NC]
RewriteRule \.(jpeg|gif|png)$ images/hotlinkers.jpg [R,L]

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

Вся разница в том, что в одном случае вы закрываете доступ всем, а во втором только личерам.

Способ третий. Защищаем любые файлы на сайте от сличивания

RewriteEngine on
RewriteCond %{HTTP_REFERER} ^http://(www\.)?zloylicher\.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(www\.)?esheodin\.com/ [NC]
RewriteCond %{REQUEST_FILENAME} !hotlinkers.jpg$
RewriteRule .*\.(gif|jpe?g|png|bmp|pdf|zip|rar|mp3|js)$ http://www.mysite.com/images/hotlinkers.jpg [R]

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

Пожалуй на этом все, удачи!

По материалам http://www.webmakerslounge.com


  • 0

#3 psiallon

psiallon
    Topic Starter
  • Пользователь
  • 14 сообщений
  • Репутация: 0

Отправлено 17 Август 2009 - 15:12

yury, спасибо большое, очень помогли.
  • 0

#4 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 19 Август 2009 - 14:32

yury, интересно было узнать. Давно ещё как-то читал доку по .htaccess и там было подобное, но не так подробно и без примеров. Спасибо огромное, потестим на досуге.
  • 0

#5 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 19 Август 2009 - 14:48

ZiTosS,
автор статьи не я.
Так что это не мне спасибо, а как тут кто-то в своей подписи правильно заметил - "великому Гуглю" ;)
(этож цитата)


  • 0


Оформление форума – IPBSkins.ru