我有一个asp.net Web应用程序。由于安全问题,我需要阻止执行可能上传到我的主机的PHP脚本。黑客是否可能使用此PHP文件来破坏我的服务器? 考虑到黑客可以找到上传文件的虚拟路径,他们可以使用url访问上传的文件,然后执行php文件。
如何防止此问题。
答案 0 :(得分:0)
我需要阻止执行可能上传到我的PHP脚本 宿主
一般来说,这就像没有运行访问者上传的内容一样简单。,根本不应该是机会, PHP或其他方式,用户上传的文件将被执行。
如果我不得不猜测,您的问题源于获取用户上传的文件并将其填充到文档根目录中的文件夹中。当您稍后提供服务时,IIS正在处理类似常规"站点文件"并将它们传递给相关的处理程序。
处理此问题的一种方法只是限制用户可以上传的文件类型。创建一个白名单:
*.png
*.jpeg
*.jpg
*.gif
etc.
如果用户上传其他的内容而非白名单上的内容,请拒绝该文件或在服务器上重命名和/或将其压缩。
处理此的另一种方法,可能更好的方法是将文件放在文档根目录之外,或者放在数据库或上面根目录下的文件夹中。然后,使用自定义处理程序将它们运送进出。
如果您选择要下载的文件夹,应该能够为您的配置中的目录(未经测试)中的所有文件注册处理程序:
<configuration>
<system.web>
<httpHandlers>
<add verb="*" path="path/to/downloads/*"
type="YourHanlderClassName, YourHandlerAssemblyName" />
</httpHandlers>
</system.web>
</configuration>
这也应该在文档根目录中的文件上工作,这在没有数据库访问的共享主机情况下可能是必要的;但它并不理想。错别字和其他配置错误可能允许文件夹中的某些内容可供直接访问。
如果您不关心访问控制,您可以想象还会在您的上传/下载文件夹中添加Web.config
一般的MIME类型:
<configuration>
<system.webServer>
<staticContent>
<mimeMap fileExtension=".*" mimeType="application/octet-stream" />
</staticContent>
</system.webServer>
</configuration>
但是,我还没有测试所有的场景。并且它不允许优雅的访问控制。所以,你肯定需要玩它......