【问题标题】:ImageResizer and security considerationsImageResizer 和安全注意事项
【发布时间】:2014-08-19 20:00:42
【问题描述】:

我们正在考虑在我们的商业应用程序中使用 ImageResizer,并且有一些与安全性相关的问题。该应用程序将允许用户上传图像,以便随后在网页上显示。

我们想知道如何使用 ImageResizer 来防范诸如压缩炸弹、JAR 内容、有效负载、exif 暴露和格式错误的图像数据等攻击。

我想我一般知道如何解决这些问题,但我想知道 ImageResizer 提供了哪些具体工具。

【问题讨论】:

    标签: security imageresizer


    【解决方案1】:

    大多数 ImageResizer 数据适配器都提供“untrustedData=true”配置设置。

    此设置反过来在ImageResizer.Configuration.Config.Current.Pipeline.PostRewrite 事件期间在请求查询字符串中设置&process=always

    如果您愿意,可以为所有图像请求设置它。请记住,这将导致对原始图像的重新编码请求可能会降低质量和/或增加尺寸。

    当设置process=always 时,所有图像都会重新编码并去除 exif 数据,以防止潜在的恶意图像到达浏览器。这意味着客户端将收到 500 错误而不是格式错误的图像。

    然而,如何解释图像同样重要。如果您允许用户上传以保留其原始文件名或仅保留扩展名(而不是从白名单中选择),那么您就会向简单的攻击向量敞开大门。同样,如果将图像设置为具有 javascript mime-type 的浏览器,客户端可能会将其解释为 javascript 并获得 XSS'd。 ImageResizer 的管道使用白名单来防止这种情况发生。

    此外,如果您打算对所有上传内容重新编码,在上传阶段而不是在每个请求中都这样做可能更容易。但是,这取决于您的数据存储的安全性,并确保没有“原样”上传可以成功。

    【讨论】:

    • 我确实想在上传时重新编码一次。我不确定您所说的“这取决于您的数据存储的安全性并确保没有“原样”上传可以成功”我想我会尝试重新编码,依靠 ImageResizer 来让我知道是否有问题,例如无效的图像内容。理想情况下,如果发生这种情况,我会替换一个表明发生错误的库存图像。另外,你能解释一下白名单功能吗?什么被列入白名单?
    • 1) 即,如果您接受公开推送到 S3 商店,则在通过您的应用服务器进行的上传期间重新编码并不重要。 2) 如果您使用 ImageResizer HttpModule,它只会提供具有图像 mime-types 的图像。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多