Как защитить оригинальные изображения, если у Вас битрикс

Алексей Будагов,

Даже если нет прямой ссылки и налету добавляется водяной знак часто можно скачать оригинал изображения. Для примера сайт мебели 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 шаблон в настройках инфоблока.

Далее в процессе "ресайза" можно добавить символическую ссылку на изображение, таким образом изменив путь к файлу. Примерно так:

foreach ($arResult["ITEMS"] as $i => $arItem) {
	if ($arItem['PREVIEW_PICTURE']['SRC']) {
		$fileName = '/images/'.$arItem['PREVIEW_PICTURE']['FILE_NAME'];
		if (!file_exists($_SERVER['DOCUMENT_ROOT'].$fileName)) {
			$file = CFile::ResizeImageGet(
				$arItem['PREVIEW_PICTURE'], 
				array('width' => 320, 'height' => 180), 
				BX_RESIZE_IMAGE_PROPORTIONAL, 
				true
			);
			symlink($_SERVER['DOCUMENT_ROOT'].$file["src"], $_SERVER['DOCUMENT_ROOT'].$fileName);
		} else {
			$arResult["ITEMS"][$i]['PREVIEW_PICTURE']['SRC'] = $fileName;
		}
	}
}

В итоге, вместо страшной и "раскрывающей" оригинал ссылки
/upload/resize_cache/iblock/2d9/1999_1427_1e7a9a3edf0396df2650852cd55788420/2d9016b8a6f91649cdeff6d6beab944f.jpg,
получим красивую и безопасную
/images/gostinaya-139.jpg

Опубликовано 25 Сентября 2017
разработчику, делаюИМ, баг

Возврат к списку

Комментарии