Sitecore.Pipelines.HttpRequest.ResizePicture 在 Sitecore 7.5 中被注释掉
Sitecore.Pipelines.HttpRequest.ResizePicture is commented out in Sitecore 7.5
在 Sitecore 7.5 版本 141003 的默认安装中,httpRequestEnd
处理器 Sitecore.Pipelines.HttpRequest.ResizePicture
在 web.config 中被注释掉了。
我们为未注释掉的客户端构建了 7.5 rev 141003。
有人知道这是干什么用的吗?为什么它会被默认注释掉或者您会取消注释?
如果我们反编译 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 中,如果您检查日志文件,您可能会看到大量这样的条目:
ERROR MediaRequestProtection: An invalid/missing hash value was
encountered. The expected hash value:
681CB48737DFF780679D0FA51542B987DA3C591F. Media 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 之前的任何版本迁移,您将在日志中看到许多此类错误。否则你永远不会注意到。
处理器什么都不做,只是检查参数的查询字符串,但由于它没有将值设置为任何值,因此可以安全地恢复为默认的 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);
}
在 Sitecore 7.5 版本 141003 的默认安装中,httpRequestEnd
处理器 Sitecore.Pipelines.HttpRequest.ResizePicture
在 web.config 中被注释掉了。
我们为未注释掉的客户端构建了 7.5 rev 141003。
有人知道这是干什么用的吗?为什么它会被默认注释掉或者您会取消注释?
如果我们反编译 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 中,如果您检查日志文件,您可能会看到大量这样的条目:
ERROR MediaRequestProtection: An invalid/missing hash value was encountered. The expected hash value: 681CB48737DFF780679D0FA51542B987DA3C591F. Media 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 之前的任何版本迁移,您将在日志中看到许多此类错误。否则你永远不会注意到。
处理器什么都不做,只是检查参数的查询字符串,但由于它没有将值设置为任何值,因此可以安全地恢复为默认的 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);
}