Sitecore.Pipelines.HttpRequest.ResizePicture在Sitecore 7.5中被注释掉了

时间:2015-11-20 18:46:41

标签: sitecore sitecore7

在默认安装的Sitecore 7.5 rev 141003中,httpRequestEnd处理器Sitecore.Pipelines.HttpRequest.ResizePicture在web.config中被注释掉。

我们为客户提供了7.5 rev 141003的版本,但没有注释掉它。

任何人都知道这是为了什么以及为什么它会在默认情况下被注释掉,或者你会取消注释?

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分: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使用图像控件生成的所有链接都可以正常使用,但对于硬编码的图像网址,由于哈希不会存在,因此会出现问题。

在7.5中,如果你检查你的日志文件,你可能会看到大量这样的条目:

  

错误MediaRequestProtection:无效/缺少哈希值   遇到。预期的哈希值:   681CB48737DFF780679D0FA51542B987DA3C591F。媒体网址:...

这与没有哈希的媒体项的查询字符串有关。您可以在以下位置关闭这些日志条目:

/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之前的任何版本迁移,您将在日志中看到许多这些错误。否则你永远不会注意到。