我有一个asp.net应用程序。项目中有一个文件夹,用户将图像和文件上传到该文件夹。
我想限制用户,每个用户只能看到他的文件。我怎样才能做到这一点? 由于文件是在文件夹中上传的,因此用户可以通过浏览文件网址来访问它们。
答案 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服务器上的帐户
,可能需要咨询http://serverfault.com答案 1 :(得分:0)
您必须在image文件夹中创建web.config并使用FormsAuhentication 在web.config中:
<authorization>
<deny users="?"/> // anonymous user
</authorization>