ImageResizer和安全性考虑因素

时间:2014-06-29 05:08:13

标签: security imageresizer

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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

如何解释图像同样重要。如果您允许用户上传以保留其原始文件名或仅扩展名(而不是从白名单中选取),则可以打开容易攻击的向量。同样,如果使用javascript mime-type将图像设置为浏览器,则客户端可能会将其解释为javascript并获得XSS。 ImageResizer的管道与白名单一起使用以防止这种情况发生。

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