保护目录中某些文件类型不被服务的最佳方法

时间:2012-04-30 15:12:14

标签: c# iis-7.5 asp.net-3.5 file-security

我有一个目录“d:/resources/xxxxx/file-name.xxx”,用于存储文件类型:.png,.xml,.pdf,这些文件由网站访问。虚拟目录在IIS中设置,“资源”,指向此硬盘驱动器位置,允许通过http请求访问.png图像,但我通过硬盘驱动器引用.pdf和.xml文件地点。这些文件是工作流程过程的一部分,因此它们必须全部保留在当前目录结构中。

需要允许IIS提供.png图像,但出于安全考虑,我不希望允许它提供.pdf或.xml文件。

我尝试设置一个http处理程序,它可以正常工作,但我无法使路径具体。如果我将其设置为“/ resources / *”,那么我需要手动输出允许的文件类型,这有点不稳定。我无法将路径设置为“* .pdf”,因为应允许其他目录访问其.pdf文件。

如果有人试图访问“www.mysite.com/resources/dir/mypdf.pdf”或“... / myxml.xml”,我只是想找到一种限制访问的直接方式,但是仍然允许.png以及所有其他可能的文件类型。

另外,如果我错误地解决这个问题,请告诉我。

2 个答案:

答案 0 :(得分:4)

尝试在结束标记之前添加此内容以进行配置,并查看其操作方式:

<location path="/resources">
    <system.webServer>
        <handlers>
            <add name="PdfForbiddenHandler" path="*.pdf" verb="*" type="System.Web.HttpForbiddenHandler" resourceType="File" preCondition="integratedMode" />
            <add name="XmlForbiddenHandler" path="*.xml" verb="*" type="System.Web.HttpForbiddenHandler" resourceType="File" preCondition="integratedMode" />
        </handlers>
    </system.webServer>
 </location>

答案 1 :(得分:1)

使用IIS(7.x,经典模式)Manager UI:

  1. 展开您的网站并选择“资源”目录。
  2. 功能视图中,双击处理程序映射
  3. 在网格中,找到名为“ StaticFile ”的模块映射,双击此项;
  4. 输入允许的文件扩展名,例如* .png,* .gif等。
  5. 单击“确定”。
  6. enter image description here