C# 文件上传下载系统的安全风险

C# 文件上传下载系统的安全风险,c#,security,model-view-controller,file-upload,file-read,C#,Security,Model View Controller,File Upload,File Read,我知道有很多关于这些话题的帖子。但是这些帖子通常会谈论限制文件类型和大小等等。因此,由于我的系统没有任何约束条件,非标准服务满足我的需要 假设我们有一个web应用程序,它接受登录用户的上传。这些用户通过Active Directory进行身份验证。不允许匿名用户 用户可以将任何类型的文件上载到系统。然后用户可以通过我们的多功能查看器预览上传的文件。现在我们支持一些基本的文件类型,如图片、音乐、视频、pdf文件和office文件。我通过检查字典中的可查看类型来决定是否使用可查看类型,如果类型不存在

我知道有很多关于这些话题的帖子。但是这些帖子通常会谈论限制文件类型和大小等等。因此,由于我的系统没有任何约束条件,非标准服务满足我的需要

假设我们有一个web应用程序,它接受登录用户的上传。这些用户通过Active Directory进行身份验证。不允许匿名用户

用户可以将任何类型的文件上载到系统。然后用户可以通过我们的多功能查看器预览上传的文件。现在我们支持一些基本的文件类型,如图片、音乐、视频、pdf文件和office文件。我通过检查字典中的可查看类型来决定是否使用可查看类型,如果类型不存在,则不会预览,而是直接下载

我对我的安全风险很好奇,因此我将尝试详细阐述我的系统

就文件保存程序而言,我有两种不同的系统:

  • 一种互联网应用程序,其中存储是一个结构化文件系统,其中文件名使用guid更改
  • 一种intranet应用程序,其中存储为非结构化文件系统,用户上传文件时,文件直接位于网络驱动器上,用户也可以通过网络驱动器访问文件
  • 对于这两个应用程序,预览策略是相同的

    所有文件都由一个操作方法提供,该方法只能在经过身份验证的情况下访问。允许上传文件的逻辑路径遍历

    非office文件返回到客户端,并显示在
    img
    video
    embed
    html标记中

    另一方面,office文件首先通过Microsoft office的互操作库执行,转换为pdf,然后返回到客户端,然后再次显示为常规pdf

    我想知道,通过这些过程,我是否会在服务器端损害任何安全性?我知道用户可以上传恶意文件,但用户在写入或读取文件的过程中是否有任何方式可以伤害我的系统


    更新:在防病毒软件将文件放入临时区域后,我正在扫描该文件。然后,如果可以的话,将其提交到premant区域。

    从声音上看,是的-例如,如果服务器上处理了上载的恶意MS Office文档以供查看。我明白了,然后通过防病毒软件在上载时扫描该文件应该可以完成这项工作,对吗?好吧,这不会造成伤害,但新的漏洞仍然可以通过。您说您正在使用互操作库转换服务器上的文件?也许您可以对该过程进行沙箱处理。是的,我使用互操作库。准确地说是Office 2010。实际上,这个过程只对非openxml格式(doc、odt等)运行。沙盒病毒扫描过程实际上也是一个好主意。你能说不存在进一步的风险吗:)从它的声音来看,是的-例如,如果上传的恶意MS Office文档在服务器上被处理以供查看。我明白了,然后在上传时通过防病毒扫描该文件应该可以做对吗?好吧,这不会造成伤害,但新的漏洞仍然可以通过。您说您正在使用互操作库转换服务器上的文件?也许您可以对该过程进行沙箱处理。是的,我使用互操作库。准确地说是Office 2010。实际上,这个过程只对非openxml格式(doc、odt等)运行。沙盒病毒扫描过程实际上也是一个好主意。你能说不存在进一步的风险吗:)