服务器是IIS7。
有没有办法在子文件夹中禁用web.config文件?
我问,因为我在网络服务器上有一个用于上传的文件夹。当有人上传文件时,会为用户的会话创建一个新文件夹,他们上传的文件将放在该文件夹中。
所以上传的路径是这样的: 〜/上传/ 3F2504E0-4F89-11D3-9A0C-0305E82C3301 / somefile.txt
在〜/ uploads /目录中有一个web.config文件,它删除除静态文件处理程序之外的所有http处理程序,并添加通配符mime类型。因此,用户上传的每个文件都只能静态提供。
如果用户上传了web.config文件,我想禁止应用该文件中的任何设置。
我该怎么做?
我是否可以将上传文件夹设为应用程序,该应用程序是配置为以经典模式而非集成管道模式运行的应用程序池的成员?这样它甚至不关心web.config文件。
我是否可以安装其他类型的网络服务器来静态提供所有文件?我可以通过不同的端口访问文件。是否有一些软件我可以确定不会运行任何脚本并且是安全的。
答案 0 :(得分:3)
我根本不允许他们上传具有该名称的文件。事实上,我通常不会相信用户给我的任何文件名...是注射式攻击的理想选择。
答案 1 :(得分:1)
好的,我对此有不同的看法......
如果您的上传文件夹不是网站的一部分而是文件系统的一部分,该怎么办?这样ASP.NET就不会处理对文件夹的请求,因此ASP.NET运行时不会加载web.config。
您必须为应用程序池的帐户提供对存储这些文件的文件系统的读/写访问权限,但我认为它更符合您要完成的任务。
答案 2 :(得分:0)
显然可以在代码中完成。
如果文件夹始终存在,您可以使用没有(重要)内容和ACL的web.config预先填充以确保它不能被覆盖,但是查看我怀疑您是否动态创建上传文件夹的路径意味着这不起作用。
答案 3 :(得分:0)
我不相信有办法告诉IIS不要使用web.config(但我可能错了)。就个人而言,我会在我的保存代码中添加一个检查并重命名该文件。
答案 4 :(得分:0)
为什么不先检查文件名以防止用户上传名为web.config的文件?在允许上传之前,您可能还想要检查其他内容 - 文件太大等等。