如何保护您的资源,例如用户上传的照片

时间:2012-10-05 08:00:48

标签: c# asp.net .net c#-4.0 asp.net-4.0

我有一些用户上传的PDF,它们保存在硬盘上。这些PDF实际上只能由上传的用户看到。但目前它并不安全。如果有人猜到了PDF的名称,那么任何人都可以查看它。

例如:http://www.something.com/PDFs/abcghjiekm.PDF

这是一种安全威胁。我希望能够做的是使用某种逻辑来处理对这些PDF的请求,并将其与我的数据库进行比较,以查看此PDF是否实际属于请求它的用户。我怎么能这样做?

编辑:我无法使用FileStream,因为我的网站已经启动并运行。我不想更改所有的代码库,并进入每个aspx页面来寻找访问PDF的位置。

3 个答案:

答案 0 :(得分:2)

您可以通过IIS中的特殊HttpHandler而不是StaticFile-Handler来处理PDF,并检查访问权限。

如果您正在使用MVC,那么像/PFDs/{file}.pdf这样的路由会返回内容。

答案 1 :(得分:0)

您还可以使用某种安全隐患,这种安全性较低,但更容易实施。例如,您可以将PDF保存在PDF文件// abcghjiekm.PDF等文件夹中,其中guid是上传用户的userId。这样就可以更难猜测给定文件的正确路径。

如果你真的需要保护私人用户数据免受未经授权的访问,我不会推荐这种方法,但如果你想要实现的只是某种错误保护(这样用户就不会访问其他文件)错误的)这应该这样做。

如果您需要真正的安全性 - 我建议您做Grumbler85建议的事情。

答案 2 :(得分:-1)

我认为您应该使用FileStream(Sql Server 2008及更高版本的一部分)来存储这些文件。 http://technet.microsoft.com/en-us/library/bb933993%28v=sql.105%29.aspx

使用它,文件区域存储在磁盘上,但在特殊的地方。你没有问题,即有人想要更改任何文件。