如何保护上传的文档不被Web表单直接访问

时间:2015-05-07 21:12:51

标签: asp.net security iis-7

我有一个允许用户上传文件的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文件夹的解决方案?

2 个答案:

答案 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响应..