如何让 IIS 阻止脚本在文件上传目录中执行?
How can I get IIS to prevent script execution in a file upload directory?
我的应用程序允许用户将文件上传到 Web 应用程序提供的目录。在大多数用例中,我们使用 S3,但我们也为想要使用自己的主机的客户提供了一种模式,在这种模式下,我们直接将文件写入硬盘。
我们有一个允许的文件类型的白名单,我们会阻止应用程序接受 .asp、.aspx、.asa 等文件。但是我担心,如果找到解决方法,攻击者可以上传 .aspx 文件并控制 Web 服务器进程。
在对此进行调查时,我发现我们的 MVC 应用程序在尝试访问此目录中不存在的路径时报告异常。其次,我担心我们可能会因此而看到不尽如人意的表现;不使用 MVC 评估路径而只使用静态内容处理程序肯定更快吗?
我想也许我问的是两个答案相同的问题:
- 如何防止 .gif 文件在返回 404 之前通过我的 ASP.NET MVC 应用程序传递?
- 如何防止目录中的所有内容被 ASP.NET 执行?
我发现执行此操作的方法是清除所有处理程序,然后重新添加静态内容处理程序。我在我的上传目录中添加了一个 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 文件。
我的应用程序允许用户将文件上传到 Web 应用程序提供的目录。在大多数用例中,我们使用 S3,但我们也为想要使用自己的主机的客户提供了一种模式,在这种模式下,我们直接将文件写入硬盘。
我们有一个允许的文件类型的白名单,我们会阻止应用程序接受 .asp、.aspx、.asa 等文件。但是我担心,如果找到解决方法,攻击者可以上传 .aspx 文件并控制 Web 服务器进程。
在对此进行调查时,我发现我们的 MVC 应用程序在尝试访问此目录中不存在的路径时报告异常。其次,我担心我们可能会因此而看到不尽如人意的表现;不使用 MVC 评估路径而只使用静态内容处理程序肯定更快吗?
我想也许我问的是两个答案相同的问题:
- 如何防止 .gif 文件在返回 404 之前通过我的 ASP.NET MVC 应用程序传递?
- 如何防止目录中的所有内容被 ASP.NET 执行?
我发现执行此操作的方法是清除所有处理程序,然后重新添加静态内容处理程序。我在我的上传目录中添加了一个 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 文件。