安全的实现,允许用户上传Excel文件

我目前有一个网站(ASP.NET 3.5,IIS 7.0),允许用户上传Excel文件进​​行处理。

我应该关心打开文档时正在执行的病毒和恶意代码吗?

我们正在使用.NET Office.Interop程序集来获取文档中的信息。 这些信息并不完全是表格,需要一点点的询问才能得到所需的格式。

一旦文件被上传,它将被存储在数据库中,只有当文件被检查时才被写入磁盘。

有没有什么build议可以提供安全的实施?

使用xlsx(Open XML)文件格式比使用xls或xlsm更安全,因为xlsx工作簿不能包含macros。

您可能会考虑使用不使用COM Interop或任何本机调用的纯.NET组件,也不需要使用FullTrust。 SpreadsheetGear for .NET就是这样一个组件的一个例子。

免责声明:我自己的SpreadsheetGear LLC

消毒是唯一确定的方法。 由于这不是简单的表单input,所以您需要采取额外的预防措施。 我可以想象的最简单的方法是将任何二进制指示符(例如控制字符)加以核实。

至于最佳做法,你不能真正告诉你的用户“请不要破解我”,所以你必须有一定程度的信任(或放弃Excel文件)…我会说,如果第一通过拾取任何二进制标志,焚烧它,并抛出一个相当钝的错误,如“文件格式错误”,等等。

但是,当然,你的用户会杀了你,他们得到一个好文件的错误。