限制对ASP.NET站点上的文件的公共访问

Qui*_*ome 2 asp.net security

试图阻止访问特定文件,而不是任何具有特定扩展名的文件,只能访问一个特定文件.问题是最终用户只需在他们的浏览器中键入:/filename.xml,就可以看到这个文件的内容,我宁愿他们也看不到这个.


我尝试过的事情:

1) 将文件放在别处

我有一个"安全"文件夹作为我的托管帐户的一部分.所以我想我只是将路径改为:"..\..\..\SSL\FileName.xml"并将文件移到那里.ASP.NET在此崩溃时出现错误:

  • 无法使用前导..退出顶级目录

所以我认为这是出于安全目的.

2) web.config中的位置

接下来我尝试在web.config中使用它:

  <location path="FileName.xml">
    <system.web>
      <authorization>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>
Run Code Online (Sandbox Code Playgroud)

这似乎没有做任何事......任何人都知道为什么?我不是在这个应用程序中专门使用ASP.NET身份验证,这是为什么这不起作用?

3) 使用IIS来阻止访问

唉,我无法访问IIS,因为我有一个非常蹩脚的托管帐户.


那么有谁知道我在上述尝试中做错了什么,或者我可以尝试任何替代解决方案?

kthxbye!

wom*_*omp 8

您可以将ASP.Net文件夹"App_Data"添加到您的应用程序中,并将xml文件放在那里吗?此文件夹专门用于保存此类数据并将其从浏览器/用户隐藏,但将其保留在您的应用程序范围内.

alt text http://img178.imageshack.us/img178/7708/appdata.png

至于为什么web.config文件中的授权指令不起作用,这是因为ASP.Net管道不处理".xml"文件扩展名.您需要将IIS配置为通过ASP.Net请求处理程序发送对xml文件的所有请求,以便将该安全性指令应用于它.