如何防止用户直接在网站根目录中访问文件

时间:2015-10-15 19:10:12

标签: security url-rewriting asp-classic iis-7 rule

我正在使用经典asp 网站进行以下设置:

  • 启用匿名身份验证
  • 在Port 80上运行
  • 无IP地址和域限制
  • 无请求过滤
  • 启用父路径= True
  • 每个人都不共享根文件夹

我正在处理两个安全问题。

1)用户目前可以通过输入" http://MyWebsite.com/test.txt"来访问文件(txt,pdf)。如何防止用户以这种方式访问​​非asp文件?

2)有几个文件夹(例如上传文件),其中应用程序需要具有完全访问权限。但同样,用户不应该键入物理路径来访问这些文件夹下的此类文件。我该怎么设置呢?

在某种程度上,我想创建一个IIS URL Rule Rewrite,它只显示包含.asp页面的文件。所以我可以http://LocalHost/DisplayPDF.asp?ThePDF并且能够查看PDF,但我想阻止用户进入http://LocalHost/ThePdf.pdf

我的推测是我需要正确配置IIS。任何建议表示赞赏。

3 个答案:

答案 0 :(得分:1)

我通过为根目录文件创建url重写规则(以消除与继承相关的问题)并删除子目录的静态文件处理程序来实现它。

将以下web.config放在应用程序的根目录中,或者相应地修改现有的<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="ROOT_FILE_CHECK"> <match url="^[^/]*$" /> <conditions> <add input="{DOCUMENT_ROOT}\{R:0}" matchType="IsFile" /> <!-- allowed extensions --> <add input="{REQUEST_FILENAME}" pattern="\.asp$" negate="true" /> <add input="{REQUEST_FILENAME}" pattern="\.allowed1$" negate="true" /> <add input="{REQUEST_FILENAME}" pattern="\.allowed2$" negate="true" /> <!-- allowed extensions --> </conditions> <action type="CustomResponse" statusCode="404" statusReason="Not Found" statusDescription="." /> </rule> </rules> </rewrite> </system.webServer> </configuration> ,如果有其他人,请不要忘记将规则移动到适当的位置。

web.config

并将以下<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <handlers> <remove name="StaticFile" /> </handlers> </system.webServer> </configuration> 放在要阻止访问文件的每个子目录中。这个删除了静态文件处理程序,因此该目录中的静态文件变得不可访问。

fullmonthname year

答案 1 :(得分:0)

要阻止用户访问非asp文件,您需要将这些文件从根目录移动到可访问的Web文件夹之外的文件夹中。

然后,您可以将具有不同安全策略的虚拟目录映射到该新文件夹。或者,如果您想要间接访问这些文件,则需要一个页面,然后允许他们在需要时下载或显示内容。

对于上传文件夹,您应该能够在不属于网站的代码中映射文件夹并将代码上传到它们。

答案 2 :(得分:0)

您可以从IIS中删除MIME类型,这将禁止IIS提供您不想要的任何文件类型。

https://technet.microsoft.com/en-us/library/cc770504(v=ws.10).aspx