我有一个允许用户上传文件的c#.net应用程序。然后扫描文档以查找恶意软件并保存。这些文档保存在共享文件和uploads文件夹中。共享文件位于单独服务器上的Intranet上。 uploads文件夹与应用程序位于同一目录中,但不属于应用程序。主机服务器正在运行iis 7,关闭目录列表。
问题是如果外部用户能够猜出命名约定和文件名,他们可以在浏览器中输入并查看文档。
应用程序在用户帐户下运行。我们已尝试在uploads文件夹上设置权限,仅允许应用程序用户帐户访问,但这不起作用。
我还尝试将web配置添加到文件夹中:
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<allow users="application_user_account" />
<deny users="?" />
</authorization>
</system.web>
</configuration>
当放在uploads文件夹中时,这不起作用,但是当它被意外放在一个级别的文件夹中时,服务器拒绝所有用户访问环境中托管的所有应用程序。
在这种情况下,有没有人有防止直接访问uploads文件夹的解决方案?
答案 0 :(得分:1)
您可能想要结帐<location>
节点:Click Here
<location path="Logon.aspx">
<system.web>
<authorization>
<allow users="?"/>
</authorization>
</system.web>
</location>
这似乎与以下内容重复:How to restrict folder access in asp.net
答案 1 :(得分:1)
将uploads文件夹移至App_Data
。
e.g。 ~/App_Data/Uploads
App_Data
是一个无法从网络上读取的特殊文件夹。
任何导航到example.com/App_Data/Uploads/Foo.docx
的尝试都会导致授权错误。例如HTTP 403 Forbidden
HTTP响应..