【问题标题】:Image upload validation in .NET.NET 中的图像上传验证
【发布时间】:2011-06-22 21:11:13
【问题描述】:

我有一个页面,用户可以在其中上传一张图片,该图片稍后会保存在服务器上。我正在通过检查其扩展名(.jpg、.png 等)对上传的文件进行简单验证

这样的验证是否足以保证服务器安全?或者这是否让某人有机会上传可能损害我的服务器的恶意代码?如果可以验证上传的图片,怎么做?

【问题讨论】:

    标签: .net security image validation


    【解决方案1】:

    当最终用户在您的服务器上放置任何东西时,就有可能发生恶意行为。虽然双击 .jpg 图像不太可能使您的盒子崩溃,但已经知道会发生奇怪的事情。 (例如,谁知道 PDF 可能包含这么多安全问题!)

    最好的办法是尝试实际加载图像并查看 GDI+ 库是否将其识别为有效图像。如果您没有收到运行时异常,那么您就知道该图像是“有效的”。但是,如果在 GDI+ 中加载图像并不会首先破坏您的盒子,这将无法保护您。

    您可以通过将图像加载到单独的 AppDomain 中来进一步保护自己,但可以缩小潜在威胁的范围。

    【讨论】:

      【解决方案2】:

      您通常可以使用urlmon.dll 读取/检查文件的 MIME 类型。看到这个出色的答案here

      在您的服务器上安装一个好的防病毒程序也不是一个坏主意。启用实时文件系统扫描,当文件在上传后片刻消失时,它很可能包含恶意代码。

      【讨论】:

        【解决方案3】:

        通过该验证,任何人都可以上传任何内容,只要他们提供您正在寻找的扩展名即可。漏洞取决于你对它们做了什么。如果您重新为它们提供服务,接收它们的人可能会受到损害。对他们做坏事需要一些创造力,但我的直觉告诉我这是可以做到的。

        这个答案 (Validate image from file in C#) 似乎对以编程方式实际验证图像有一些想法。

        【讨论】:

          猜你喜欢
          • 2017-04-28
          • 2017-03-06
          • 1970-01-01
          • 1970-01-01
          • 2015-09-07
          • 2022-10-19
          • 2018-02-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多