阻止用户通过浏览器而不是通过链接导航到文档

时间:2012-05-03 16:57:00

标签: c# iis-7 forms-authentication

我的网站中有一个文件夹,其中包含我不希望用户通过浏览器浏览的文件,因此我将其放入我的web.config

<location path="documents">
    <system.web>
      <authorization>
        <deny users="*"/>
      </authorization>
    </system.web>
    <system.webServer>
      <directoryBrowse enabled="false" />
    </system.webServer>
  </location>

问题是,在我网站的某些页面上,我有这些文档的链接,我希望用户在点击它们时能够看到这些文档。问题是,目前当他们点击这些链接时,他们没有得到文件。我明白这是一个矛盾的事态。对我有利的唯一事情是,当用户点击链接时,他将登录。有什么办法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

我这样做的方法是使用一个页面作为参数接收你想要获取的文件的一些ID(如果它本身不是安全漏洞,文件名本身也可以)检查用户的凭证和访问代码后面的文件,然后用文件的内容覆盖输出(在服务器端加载)。

这样客户端根本不需要访问机密文件夹,所有通信都通过您的网页和凭证检查算法。即使他们从某人那里获得了有效的链接而且他们无法访问它,他们也会收到拒绝请求的屏幕(或者您选择编码的任何内容)。