如何让IIS阻止在文件上载目录中执行脚本?

如何让IIS阻止在文件上载目录中执行脚本?,iis,iis-8.5,Iis,Iis 8.5,“我的应用程序”允许用户将文件上载到由web应用程序提供服务的目录。在大多数用例中,我们使用S3,但对于希望使用自己的主机的客户,我们也有一种模式,即直接将文件写入硬盘 我们有一个允许文件类型的白名单,我们阻止应用程序接受.asp、.aspx、.asa等文件。然而,我担心的是,如果找到解决方法,攻击者可能会上传一个.aspx文件并控制web服务器进程 在调查这一点时,我发现我们的MVC应用程序在尝试访问此目录中不存在的路径时报告了一个异常。我第二个担心的是,我们可能会因此看到不太理想的表现;当然

“我的应用程序”允许用户将文件上载到由web应用程序提供服务的目录。在大多数用例中,我们使用S3,但对于希望使用自己的主机的客户,我们也有一种模式,即直接将文件写入硬盘

我们有一个允许文件类型的白名单,我们阻止应用程序接受.asp、.aspx、.asa等文件。然而,我担心的是,如果找到解决方法,攻击者可能会上传一个.aspx文件并控制web服务器进程

在调查这一点时,我发现我们的MVC应用程序在尝试访问此目录中不存在的路径时报告了一个异常。我第二个担心的是,我们可能会因此看到不太理想的表现;当然,不使用MVC评估路径而只使用静态内容处理程序会更快吗

我想也许我问了两个答案相同的问题:

  • 在返回404之前,如何防止.gif文件通过ASP.NET MVC应用程序
  • 如何防止目录中的所有内容被ASP.NET执行

我发现这样做的方法是清除所有处理程序,然后重新添加静态内容处理程序。我向我的uploads目录添加了一个web.config文件,其中包含以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <clear />
            <add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" />
        </handlers>
    </system.webServer>
</configuration>

因此,无法在此目录中执行.ASPX文件