如何限制对文件系统(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 和身份中的注册用户的访问