asp.net中的文件夹权限

时间:2011-04-03 12:14:24

标签: asp.net

我有一个asp.net应用程序。项目中有一个文件夹,用户将图像和文件上传到该文件夹​​。

我想限制用户,每个用户只能看到他的文件。我怎样才能做到这一点? 由于文件是在文件夹中上传的,因此用户可以通过浏览文件网址来访问它们。

2 个答案:

答案 0 :(得分:2)

一种方法是你可以将文件存储在文件夹的用户名中,并且允许你指定路径的参数总是假设你在用户名之后谈论...就像共享网络托管必须如何工作一样。

无论如何,如果您的代码中存在某些缺陷或其他任何内容,您应该为每个用户保护每个文件夹...

e.g。每个用户文件的物理文件结构

C:\TheProject\Uploads\UserA\Images
C:\TheProject\Uploads\UserB\Images
C:\TheProject\Uploads\UserC\Images

您的网络应用的网址,其中显示当前登录用户的文件。如果UserA已登录,则显示相应文件夹中的文件等

快乐的道路:

http://example.com/browsefiles/?path=images
http://example.com/browsefiles/?path=docs

不愉快的路径:

http://example.com/browsefiles/?path=../UserA/images
http://example.com/browsefiles/?path=../../web.config

所以显然要对你接受的输入做一些非常严格的检查......或许甚至是白名单......如果用户的查询与白名单不匹配,则阻止它。在这种情况下,您可能想要阻止合法请求而不是允许恶意请求。

修改
如果用户可以访问文件而无需通过您的Web应用程序(我们可以在这里假设Intranet应用程序吗?),也许通过文件共享/网络共享/ ftp,那么您可以尝试几个选项

  • 您应用中的每个用户都是服务器上的用户(本地用户),因此他们在服务器上有一个用户名和密码(您的应用需要进行身份验证),但允许您设置每个文件夹的权限/将服务器上的文件发送给本地用户,或者
  • 如果您有Active Directory设置并且可以使用Windows身份验证,这可能会更容易,这样您就可以模拟您的Web应用程序并使用用户的活动目录帐户保护文件/文件夹。

如果您需要Active Directory或Windows服务器上的帐户

,可能需要咨询http://serverfault.com

答案 1 :(得分:0)

您必须在image文件夹中创建web.config并使用FormsAuhentication 在web.config中:

  <authorization>
  <deny users="?"/>  // anonymous user
  </authorization>