2015-11-20 3 views
0

При установке Sitecore 7.5 rev 141003 по умолчанию процессор httpRequestEndSitecore.Pipelines.HttpRequest.ResizePicture закомментирован в web.config.Sitecore.Pipelines.HttpRequest.ResizePicture закомментирован в Sitecore 7.5

У нас есть сборка 7.5 rev 141003 для клиента, где он не закомментирован.

Кто-нибудь знает, для чего это необходимо, и почему он будет прокомментирован по умолчанию, или вы раскомментируете его?

ответ

1

Процессор ничего не делает, просто проверяет запрос для параметра, но поскольку он не устанавливает значение ни на что, его можно безопасно вернуть в конфигурацию Sitcore по умолчанию. Этот процессор не использовался с Sitecore 6.2 по крайней мере, возможно, раньше, поэтому он может быть устаревшим из очень старой версии.

Декомпиляция Sitecore.Pipelines.HttpRequest.ResizePicture показывает следующее:

public override void Process(HttpRequestArgs args) 
{ 
    Assert.ArgumentNotNull((object) args, "args"); 
    int num = WebUtil.GetQueryString("sc_thumbnail") == string.Empty ? (false ? 1 : 0) : (true ? 1 : 0); 
} 
0

Если мы декомпилируем процессор 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, вы увидите много этих ошибок в журналах. Иначе вы никогда не заметите.

+1

Ммм ... Я думаю, вы поняли, почему MediaProtection был введен, это для [предотвращения DDoS-атаки с использованием параметров QueryString] (Http: //blog.najmanowicz. ком/2015/05/15/делать-не-пошаговую Sitecore-медиа-запрос защиты и выключение и защиты от-старшей-Sitecore-версия-с-imageguard /). Использование параметров querystring для управления размерами изображений не обескураживается и является одной из особенностей библиотеки Sitecore Media. Но если вы собираетесь их использовать, вам также необходимо также предоставить хэш-информацию в URL-адресе самостоятельно. – jammykam

+0

Спасибо, я уточню свой ответ, чтобы отразить аспекты атаки. –