Я искал что-то похожее, но для случайных изображений. Я ничего не нашел, поэтому я решил внести свой вклад.
Мое последнее решение, использующее подписи, может быть применено здесь, хотя и с некоторыми изменениями, которые я также включил внизу.
Мы должны различать (как минимум) две вещи:
A. Запретить кому-либо сохранять изображения из браузера.
B. Запретить кому-либо писать сценарий для автоматического копирования всех ваших изображений.
Решения:
A.
Практически невозможно, а также не то, что вы хотите. Представьте себе веб-сайт, который мешает вам, когда вы пытаетесь использовать браузер так, как он должен был быть использован. Точно, ты был бы несчастен. Есть совершенно законные причины для того, чтобы кто-то захотел сохранить изображение, самым простым и лестным было бы использовать его в качестве обоев на компьютере или телефоне.
Лучшим решением будет включение водяного знака. Таким образом, людям напоминают о том, откуда эти изображения, и они все еще могут использовать их для личных вещей.
Я думаю, что это общее правило применяется в Интернете: если вы не хотите, чтобы оно распространялось вне вашего контроля и вы получали кредит, не размещайте его в Интернете.
В.
Это менее приятный сценарий. Самое основное, что я когда-то сделал, чтобы сделать сложное копирование изображений, это a. использовать непредсказуемые ссылки на изображения и б. создайте на вашем сервере скрипт, который при вызове будет извлекать изображение из вашей файловой системы, а затем выводить это изображение. Например: http://example.com/some_image.php
Код действительно прост:
<?php
$name = './img/ok.png';
$fp = fopen($name, 'rb');
header("Content-Type: image/png");
header("Content-Length: " . filesize($name));
fpassthru($fp);
Источник: ТАК ответ по теме
Итак, однажды я создал сценарий, подобный описанному выше, но добавил туда параметр синхронизации, чтобы при его двухкратном вызове (из одного сеанса), скажем, 10 секунд вернуло одно и то же изображение. Таким образом, автоматизированный скрипт может работать только с 1 изображением каждые 10 секунд. Кроме того, вы можете сделать так, чтобы URL содержал некоторый хэш метки времени:
http://example.com/some_image_$(md5(Time.now + "secret")_Time.now).png
так, например:
`http://example.com/some_image_aihfio1n...oi12nof_1396723820.png
Чтобы проверить, разрешено ли извлечение изображения, выполните следующие действия:
Вы берете запрошенное имя файла, удаляете 'some_image', а затем хеш md5. Затем вы проверяете, находится ли данное время («1396723820») в пределах «сейчас» и 10 минут (с учетом колебаний). Затем проверьте правильность хэша для этой временной метки + «секрет».
Вы можете видеть это как подпись, которая иногда используется в цифровой связи, хотя и очень простая и не очень сильная или что-то в этом роде.
Использование этого метода для ваших производственных изображений может выглядеть примерно так:
http://example.com/some_image$(md5($image_id, "secret",$timestamp))_$image_id_$timestamp.png
$image_id
вот какой-то статический идентификатор для вашего изображения (имя_файла, идентификатор продукта в вашей базе данных и т. Д.).
Пожалуйста, кто-нибудь, поправьте меня, если мое предположение, что это усложняет прогнозирование путей к файлам, неверно. В конце концов, первое правило создания шаблонов шифрования - «не делай этого». Так же и второй. Но это довольно невинный, с которым можно поиграть.