尝试阻止访问特定文件,而不是任何具有特定扩展名的文件,只能访问一个特定文件。 问题是最终用户只需在他们的浏览器中输入:/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>
这似乎没有做任何事......任何人都知道为什么?我不是在这个应用程序中专门使用ASP.NET身份验证,这是为什么这不起作用?
3) 使用IIS阻止访问
唉,我无法访问IIS,因为我有一个非常蹩脚的托管帐户。
所以有人知道我在上述尝试中做错了什么,或者我可以尝试任何其他解决方案吗?
kthxbye!
答案 0 :(得分: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文件请求,以便将该安全指令应用于它。
答案 1 :(得分:0)
IIS不处理xml文件(只是将它们发布给请求者),因此安全性不起作用。令人惊讶的是,在Mono平台上工作......无论如何,你可以做这个解决方法: