如何限制对文件系统(ASP.NET Web 应用程序目录)中文件的访问?

Posted

技术标签:

【中文标题】如何限制对文件系统(ASP.NET Web 应用程序目录)中文件的访问?【英文标题】:How To Rectrict Access to the Files in File System(ASP.NET Web application directory)? 【发布时间】:2012-10-18 14:01:56 【问题描述】:

我正在开发一个 ASP.Net Web 应用程序。在那个用户可以上传文件,他们可以在需要时查看相同的文件。这些上传文件保存在文件系统中(路径:- WebApp/Uploads/Docs)。仅当用户是文档的所有者或上传时,才会将其提供给用户。

我的问题是:带有此 WebApp/Uploads/Docs/Doc1.doc 的文件 路径只能由该文档的上传者/所有者访问。

必须限制其他应用程序用户访问此路径。

那么,我可以在将此文件提供给其他用户之前进行检查(用户是否为所有者)吗?

【问题讨论】:

【参考方案1】:

我会建议您将文档放在网站目录之外,因为这会使它们暴露在未经授权的下载中。

至于您需要的检查,您可以为您的文档创建一个通用处理程序 (*.ashx),该处理程序将验证文档所有者并将内容仅提供给允许的用户。

HTTP Handlers and HTTP Modules Overview

【讨论】:

我认为这对我来说是一个不错的选择。但是出现了一个小问题:使用此处理程序检查权限后。我们将控制发送到相同的文件路径或某个错误页面。当用户获取 rite 文件路径时,他们可能会尝试直接 rite 访问它。?我有礼貌吗? 您不应该公开服务器的目录路径。用户将获得一个文件缓冲区,而不是文件本身的路径。【参考方案2】:

您可以通过 Web.config 实现此目的 在 web.config 下添加元素..

在元素中,添加配置元素和配置元素。使用 users 属性指定以逗号分隔的用户名列表。您可以使用问号 (?) 作为与任何用户名匹配的通配符。例如,以下代码拒绝除 user1 和 user2 之外的所有用户访问:

<authorization>
    <allow users="user1, user2"/>
    <deny users=”?”/>
</authorization>

【讨论】:

他们可能会上传大量文件,并且只有上传者才有权限。所以我认为这不是一个好的选择。

以上是关于如何限制对文件系统(ASP.NET Web 应用程序目录)中文件的访问?的主要内容,如果未能解决你的问题,请参考以下文章

是啥限制了我的 ASP.NET 应用程序可以与 Web 服务建立的同时连接数?

限制对 ASP.NET Web API 和身份中的注册用户的访问

ASP.NET url MAX_PATH 限制

在 Asp.net 中运行外部可执行文件的内存限制

生成的 Excel 文件在不同系统中显示不同的日期值(Asp.net Web 应用程序)

如何将文件从 ASP.NET 上传到另一个 Web 应用程序