Если мы декомпилируем процессор Sitecore.Pipelines.HttpRequest.ResizePicture
, мы видим, что он делает что-то очень простое. Метод Process
просто вызывает:
Assert.ArgumentNotNull((object) args, "args");
int num = WebUtil.GetQueryString("sc_thumbnail") == string.Empty ? (false ? 1 : 0) : (true ? 1 : 0);
Это означает, что ощущает манипуляцию размера изображения с помощью строки запроса. Начиная Sitecore 7.5, манипулирование изображением с помощью параметров строки запроса невозможно без добавления хэша для целей безопасности в случае, если атака заключалась в максимальном использовании ресурсов, выполняя многие изменения размера изображения.
Рекомендуемый подход теперь заключается в изменении размера изображения в медиабиблиотеке и вызове только изображения без строки запроса, но если вам нужно сделать это с помощью строки запроса, обязательно добавьте хэш. Все ссылки, созданные Sitecore с помощью элементов управления изображением, будут прекрасными, но для жестко заданных URL-адресов изображений будут проблемы, поскольку хэшей их не будет.
В 7.5, если вы проверяете лог-файлы, вы, вероятно, увидите тонны записей, как это:
ОШИБКИ MediaRequestProtection: Указано недопустимое/отсутствующее значение хэша был встречается. Ожидаемое значение хеша: 681CB48737DFF780679D0FA51542B987DA3C591F. Медиа URL: ...
Это связано с запросами строк медиа-элементов без хэшей. Вы можете включить эти записи журнала от в:
/app_config/includes/Sitecore.MediaRequestProtection.config
Здесь вы можете отключить ведение журналов в целом, так что эти вопросы не вызывают записи журнала каждый раз.
<setting name="Media.RequestProtection.Logging.Enabled" value="false" />
Конечно, вы можете отключить защиту полностью, а также:
<setting name="Media.RequestProtection.Enabled" value="false" />
Хотя это способ обойти вопрос быстро, не рекомендуется, так как вы будете в обход функции безопасности ,
Вы также можете указать, какие параметры защищены с помощью этого списка:
<protectedMediaQueryParameters>
<parameter description="width" name="w"/>
<parameter description="height" name="h"/>
<parameter description="max width" name="mw"/>
<parameter description="max height" name="mh"/>
<parameter description="scale" name="sc"/>
<parameter description="allow stretch" name="as"/>
<parameter description="background color" name="bc"/>
<parameter description="database name" name="db"/>
<parameter description="ignore aspect ratio" name="iar"/>
<parameter description="language code" name="la"/>
<parameter description="thumbnail" name="thn"/>
<parameter description="version number" name="vs"/>
<parameter description="content database" name="sc_content"/>
<parameter description="content language name" name="sc_lang"/>
<parameter description="context site" name="sc_site"/>
<parameter description="grayscale filter" name="gray"/>
</protectedMediaQueryParameters>
Это еще одно усилие Sitecore для повышения производительности, но выполняется в плохом пути. Если вы перешли с любой версии до 7.5, вы увидите много этих ошибок в журналах. Иначе вы никогда не заметите.
Ммм ... Я думаю, вы поняли, почему MediaProtection был введен, это для [предотвращения DDoS-атаки с использованием параметров QueryString] (Http: //blog.najmanowicz. ком/2015/05/15/делать-не-пошаговую Sitecore-медиа-запрос защиты и выключение и защиты от-старшей-Sitecore-версия-с-imageguard /). Использование параметров querystring для управления размерами изображений не обескураживается и является одной из особенностей библиотеки Sitecore Media. Но если вы собираетесь их использовать, вам также необходимо также предоставить хэш-информацию в URL-адресе самостоятельно. – jammykam
Спасибо, я уточню свой ответ, чтобы отразить аспекты атаки. –