2015-10-15 116 views
0

我有传统的ASP网站具有以下设置工作:如何防止用户直接在网站根目录访问文件

  • 匿名身份验证启用
  • 运行在端口80
  • 无IP地址和域名限制
  • 无请求过滤
  • 启用父路径=真
  • 根文件夹不被所有人共享

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

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

2)有几个文件夹(例如上传)应用程序需要有完全访问权限。但是用户不应该能够键入物理路径来访问这些文件夹下的这些文件。我如何设置?

以某种方式,我想创建一个IIS URL规则重写,它只显示其中包含.asp页面的文件。所以我可以有http://LocalHost/DisplayPDF.asp?ThePDF并能够查看PDF,但我想阻止用户去和输入http://LocalHost/ThePdf.pdf

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

回答

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> 
+0

感谢@库尔 - TIGIN。但是,我得到错误代码0x8007000d 500.19错误。请注意,这是经典的asp。经典的ASP识别web.config文件? – amindomeniko

+0

@amindomeniko web.config是关于IIS7 +的,所以它不重要的asp或asp.net甚至php。 '500.19'表示你的web.config文件无效。如果没有最后一个'web.config'就很难说清楚,用你当前的'web.config'来更新这个问题。 –

+0

之前没有web.config。尽管如此,当我在IIS中使用规则重写UI创建规则时,问题就解决了。任何想法为什么这个webconfig返回一个错误? – amindomeniko

0

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

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

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

0

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

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

+0

如果用户登录,我需要显示pdf,所以从MIME类型中删除将不起作用。 – amindomeniko

+1

在这种情况下,您需要将所有文件移到webroot之外,并编写一个处理程序来获取文件并在适当时将其发送给客户端。 –