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

C# 保护目录中某些文件类型不被服务的最佳方法,c#,iis-7.5,asp.net-3.5,file-security,C#,Iis 7.5,Asp.net 3.5,File Security,我有一个目录“d:/resources/xxxxx/file name.xxx”,其中存储的文件类型为:.png、.xml、.pdf,可通过网站访问。IIS“resources”中设置了一个虚拟目录,它指向这个硬盘驱动器位置,允许通过http请求访问.png图像,但我是根据.pdf和.xml文件的硬盘驱动器位置引用它们。这些文件是工作流过程的一部分,因此它们必须全部保留在其当前目录结构中 需要允许IIS提供.png图像,但出于安全目的,我不希望允许它提供.pdf或.xml文件 我试着设置一个ht

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

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

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

如果有人试图访问“www.mysite.com/resources/dir/mypdf.pdf”或“../myxml.xml”,但仍然允许提供.png和所有其他可能的文件类型,我只是在寻找一种直接的方法来限制访问


另外,请让我知道我是否做得不对。

尝试将此添加到配置的结束标记之前,并查看它是如何完成的:

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

要使用IIS(7.x,经典模式)管理器UI:

  • 展开站点并选择“资源”目录
  • 在功能视图中,双击处理程序映射
  • 在网格中,找到名为“StaticFile”的模块映射,双击该项
  • 输入允许的文件扩展名,例如.*.png、*.gif等
  • 单击“确定”

  • 我认为最好的办法是把它们存放在别处。因为所有权限或配置文件都可能丢失。这是常有的事。