Pull to refresh

Comments 46

Думаю, как раз неопытный пользователь будет делать скриншот (и вставлять его в Word)
Word в zip, zip в аттач
Стандартный вопрос — с кешем браузера и принтскрином что делать?
Упс, про скриншот в стать есть.
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");


Должно помочь от кеширования.
Издеваться над пользователем и сервером ради такой безсмысленной затеи.
UFO just landed and posted this here
Хмммм… Хитроумно… Но зачем?
Все что попадает на сторону пользователя можно перехватить. От банального Printscreen, но копания в кеше браузера (последнее врядли можно как-то обойти).
Я уж не говорю о разного рода «грабилках», который вполне себе замечательно детектят поток по content-type и позволяют выгрести графику «на лету».

А от неопытных картинку зачем защищать?
Я уж не говорю о разного рода «грабилках», который вполне себе замечательно детектят поток по content-type и позволяют выгрести графику «на лету».

Даже проще. Хром, f12, вкладка Resources:
image
Зачем, если скриншот делается легко, очень легко.
Легче, как по мне, уже защитить ее надписью, а так выдрать всегда можно
Причем можно защитить надписью так, чтобы не мозолила глаза и основную функцию выполняла — как сделано на 9gag, например.
Считаю, оно не стоит того, чтобы прибегать к таким вещам как хранение картинок в БД и отдача их через PHP.
Все таки, картинки это статика, которая должна отдаваться сервером напрямую (через nginx, например), а не «нагинать» серв выполнением PHP/ запросами БД.
В БД только информация о картинках. Файл images_db.php заменяет базу в данном примере.
Ок, проглядел. Но мнение мое остается таким же.
Для этих целей у nginx-а есть такая штука, как internal redirect. Т. е. php-скрипт возвращает хитрый заголовок, а nginx вместо него отдаёт файл из директории, куда обычно доступа не даёт.
А вот это уже интересней, спс.
Недавно где -то видел упоминание о таком, но не знал, как называется.
Вот тут есть неплохой мануал на эту тему. Там применительно к проверкам при скачке с url, но переделать под описываемые в статье нужды не долго.
для картинок это не выгодно. Проще nginx'у отдать выдачу их напрямую, без запроса в php. Ибо картинок много — дергать backend ради того чтоб получить x-accel-redirect накладно. Это удобно для больших файлов, flv-видео и т.п. где надо проверить наличие файла и/или права доступа к нему.
Это конечно все понятно и с вами полностью согласен. Но я вижу использование x-accel-redirect, например при такой ситуации: есть магазин фотографий. например 640x480 фотки показываются напрямую. А вот при покупке, давать юзеру фотку (большую, качественную, допустим 10k x 10к пикселей) уже через nginx, «хитрый редиректом».
(пример конечно притянут за уши, но для такого случая подойдет, думаю -, когда защищаются не картинки верстки/и вообще, часто запрашиваемые, а вот такой «скачиваемый контент»).
Ну когда я говорил о больших файлах я не имел ввиду что-то конкретное. Это может быть «платный» контент, большие файлы со скрытыми ссылками на них, flv-видео и любой другой контент, к которому необходимо ограничить доступ тем или иным способом (в том числе генерация уникальных урлов для файлов и последующая проверка урла в backend'е и выдача nginx'у правильного имени в internal). Я вот flv так отдаю со стораджей, которых много и id стораджа прописано у файлика в базе.
FF: Инструменты — Информация о странице — Мультимедиа — Сохранить как…
Как это обойти?

P.S.: не понимаю смысла написания этой статьи.
Скриншоты тут не причём.
UFO just landed and posted this here
FF: Анализировать элемент(FireBug) — Наводим на длинный путь в стилях — Открыть картинку в новой закладке

P.S.:
Вот многие выше говорят для «обычного(неопытного) пользователя»: вы сами себя не обманывайте. Всегда акцент нужно ставить на максимально возможный результат. Если бы так охранные системы работали как вы говорите: «вор с малым опытом ваш замок не откроет».

Единственное верное решение защиты картинок вероятно водяные знаки скомпилированные на картинке.
Или же просто разграничение прав доступа на большой исходник.
С ФФ 8.0 не надо ничего искать. Клик правой кнопкой на картинку, «View background image» и затем «Save as ...»
Outpost Firewall в свое время блокировал по умолчанию рефереры из «соображений безопасности».
Соразмерное количество проксиков делает то же самое, особенно в организациях.
У некоторых интернет-провайдеров в пакет «безопасности», кроме антивируса для проверки траффика входит так же обрезание рефереров.
Ввиду вышесказанного — оно точно того стоит? Потеря части аудитории, шлющей тоннами письма «у Вас кривой сайт ничего не работает» и рассказывающей друзьям о том, что «не ходи туда там глючный сайт где ничего не работает»… Да, небольшой части, но надо учесть и то, от насколько «большой» части поможет этот метод.
Ещё одна статья про борьбу с ветряными мельницами.
UFO just landed and posted this here
для повышения производительности

О какой производительности вы говорите, используя GD только для отдачи бинарника файла?
echo file_get_contents($img_path);
А еще изображение можно порезать на кучу маленьких частей и собирать их только в браузере :) — даже реферер не надо проверять — пусть мучаются, склеивая миллионы отдельных пикселей!
Остается только придумать как обойти принтскрин… :)
И почему все так боятся, что кто-то украдёт их тексты, посты, предложения и картинки?
Вспоминается как я ещё совсем ребенком скрины делал фотоаппаратом =)
Монитор на сканере круче.
М, а если сохранить страницу, разве картинка не сохранится вместе с ней?
<code class="php">$image = imagecreatefrompng($img_path);
header("Content-Type: image/png");	 
imagepng($image);</code>

Бля, даже наши челябинские мужики в шоке от вашего способа отдачи картинок. Какое к черту «повышение производительности»? Вы же каждую картинку пережимаете при отдаче!

А строчка $images[intval($_GET['id'])] намекает на то, что где-то внутри images_db.php у вас вся база картинок читается в один массив $images.

Да, getimagesize на каждое изображение — тоже ппц, не способствующий «повышению производительности».
Могу, конечно, ошибаться, но:
curl --referer example.ru/ example.ru/image.php?id=222

Все это к тому, что идеальных защит нет и приносить в жертву скорость не особо корректно. ИМХО.
> Теперь при прямом обращении к адресу example.ru/image.php?id=123 мы получим картинку no_image.jpg, так > как заголовок referrer не передаётся.
mod_rewrite и похожая вещь в nginx работают значительно быстрее чем вызов скрипта.
Защитить — не защитишь, но положив поверх прозрачный png, да ещё как фон в обвёртночном диве в качестве фона (с z-index'ом повыше разумеется, но лучше без него, об этом ниже) — можно хоть подъ… подколоть (:

Видишь пичу — сохраняешь как обычно правым кликом, а скачивается пустышка. Не раз видел лица жертв, оно того стоит.
А как защититься от сохранения страницы целиком? Например, в IE это File -> Save As -> Webpage, Complete
Шапочкой из фольги…

Никак.
> Шапочкой из фольги
Я все еще тут!
data:URI не?
Ну а так да, кто ищет тот всегда найдет, идея не давать сохранить картинки — бредовая, видимо не смогли переубедить заказчиков.
Sign up to leave a comment.

Articles