从请求中读取数据后,我需要将其转换为Image,因此我使用了此方法:
Stream inputStream = HttpContext.Current.Request.InputStream;
Image img = Image.FromStream(inputStream)
我的问题是,虽然我无法知道inputStream中的内容(文件格式已经完成但仍然......),但可能存在病毒或恶意软件,因此在这种情况下,FromStream(Stream)会抛出ArgumentException。因为它不是图像。
我的问题是 - 如果上传的文件包含病毒,并且该方法在尝试将流转换为Image时抛出异常,这是否对服务器造成了任何伤害? 如果是这样,如何避免呢?在服务器中处理文件上传的场景应该是什么?
答案 0 :(得分:4)
即使我们可以肯定地回答这个问题(我们不能,因为未知的漏洞未知,如果它是一个已知的漏洞,微软可能会修复它)它会是不负责任地发布漏洞利用的详细信息。如果我通过Image.FromStream
(或.NET框架的任何部分,或实际上任何其他方式)知道攻击媒介,那么负责任的事情就是向供应商报告(在这种情况下为MSFT)并等待让他们解决它。
基本上,您需要相信Microsoft已经检查了解析图像数据的边缘条件,并确保该代码中没有本机缓冲区溢出或其他类似漏洞。微软过去曾承认曾经犯过一些错误,但在过去的几年中,公平地解决了这个问题。