2010-10-29 58 views
1

我有一个上传控件用于发布图片的ASP.NET窗体。在服务器上,我加载该图像(使用Bitmap类)并调整其大小。是否可以加载并调整上传的图像的大小?

当用户上传恶意或受影响的文件或者代码是否会在某个时候抛出异常并停止整个过程时,是否有任何危险?

回答

1

最好的黑客可以希望使用缓冲区溢出攻击,然后他将恶意代码写入服务器内存。但是从我读过的内容来看,只有在使用不安全的代码时才会发生这种情况,并且由于Bitmap是完全管理的,所以我确信它可以安全地使用它。但是,真正聪明的黑客可以欺骗位图并创建“自定义”图片文件,该文件将是完全有效的图片,但也会包含“hitchhiker”代码,这些代码在浏览器中使用某些未来漏洞利用时可能会造成损害。最安全的方法是将Bitmap本身保存到磁盘而不是原始上传文件,这意味着使用bitmap.Save方法而不是HttpPostedFile的SaveAs方法。这样,任何额外的代码都将被省略,因为Bitmap不会加载它,您的访问者将会很安全。

顺便说一句,您可以将上传的文件存储在网站根文件夹之外,并创建“代理”文件从文件夹中读取:这样用户将无法直接浏览图像,必须使用代理文件。如果您在某个时间点添加权限机制,这非常有用,例如用户A不应该能够看到用户B上传了什么。

+0

谢谢,我们已经使用Bitmap类来调整图像大小,以便通过它们保存... – Koen 2010-11-02 09:03:02

+0

干杯,所以据我所知,你没有危险。 :) – 2010-11-02 10:19:16

0

我想:

确保上传的文件绝对是一个图像,使人们不能上传任意东西 - 但你可能有一个覆盖着他Bitmap类。

重新命名文件,一旦上传,所以有人上传不知道他们创建的文件名。

确保上传目录的权限最小。

确保无法在浏览器中查看上传目录的内容。

+0

我们重命名文件,但它们是公开托管的,因为我们显然需要在某个时间点显示它们。显然,我想避免恶意文件将其上传到上传文件夹。我们还检查HttpPostedFile类的内容类型。 – Koen 2010-10-29 12:48:22

相关问题