Как защитить оригинальные изображения, если у Вас битрикс
Даже если нет прямой ссылки и налету добавляется водяной знак, часто можно скачать оригинал изображения. Для примера сайт мебели Mr. Doors
В каталоге у них размещены изображения в достаточно хорошем качестве (1998 на 1427 пикселей), но с водяным знаком.

Ссылка на данный файл имеет вид: /upload/resize_cache/iblock/2d9/1999_1427_1e7a9a3edf0396df2650852cd55788420/2d9016b8a6f91649cdeff6d6beab944f.jpg
Для того что бы получить оригинал нужно убрать папку /resize_cache/ и папку с указанием размеров "ресайза" /1999_1427_*/. В итоге получим такую ссылку /upload/iblock/2d9/2d9016b8a6f91649cdeff6d6beab944f.jpg, перейдя по которой мы сможем скачать оригинал в разрешении 2000 x 1428 пикселей и без водяного знака.

Как быть?
Самый простой вариант - изменить путь к "обрезанному" изображению (изображению с водяным знаком) так, чтобы не было возможности получить ссылку на оригинал.
Для начала необходимо изменить само название изображения, чтобы оно не было в виде хеша. Тут все просто. Нужно включить seo шаблон в настройках инфоблока.

Далее в процессе "ресайза" можно добавить символическую ссылку на изображение, таким образом изменив путь к файлу. Примерно так:
$fileName1920 = '/images/'.$arResult['DETAIL_PICTURE']['FILE_NAME']; $file = CFile::ResizeImageGet($arResult['DETAIL_PICTURE'], array('width' => 1920, 'height' => 1080), BX_RESIZE_IMAGE_PROPORTIONAL, true); if (!is_link($_SERVER['DOCUMENT_ROOT'].$fileName1920)) { symlink($_SERVER['DOCUMENT_ROOT'].$file["src"], $_SERVER['DOCUMENT_ROOT'].$fileName1920); } elseif ($_SERVER['DOCUMENT_ROOT'].$file['src'] != realpath($_SERVER['DOCUMENT_ROOT'].$fileName1920)) { unlink($_SERVER['DOCUMENT_ROOT'].$fileName1920); symlink($_SERVER['DOCUMENT_ROOT'].$file["src"], $_SERVER['DOCUMENT_ROOT'].$fileName1920); } $arResult['DETAIL_PICTURE']['SRC'] = $fileName1920;
В итоге, вместо страшной и "раскрывающей" оригинал ссылки
/upload/resize_cache/iblock/2d9/1999_1427_1e7a9a3edf0396df2650852cd55788420/2d9016b8a6f91649cdeff6d6beab944f.jpg,
получим красивую и безопасную
/images/gostinaya-139.jpg
Есть вопросы или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.