1

我有一些用户上传的 PDF,它们保存在硬盘上。这些 PDF 实际上应该只有上传的用户才能看到。但目前它并不安全。如果有人猜到 PDF 的名称,其他人也可以查看它。

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

这是一个安全威胁。我想做的是有某种逻辑来处理对这些 PDF 的请求,并将其与我的数据库进行比较,以查看该 PDF 是否实际上属于请求它的用户。我怎样才能做到这一点?

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

4

3 回答 3

2

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

如果您使用的是 MVC,那么 /PFDs/{file}.pdf 之类的路由和控制器返回 Content 就可以了。

于 2012-10-05T08:09:17.953 回答
0

您还可以使用某种隐匿性安全性,这种安全性较低,但更易于实施。例如,您可以将 PDF 保存在诸如 PDFs//abcghjiekm.PDF 之类的文件夹中,其中 guid 是上传用户的用户 ID。这种方式猜测给定文件的正确路径要困难得多。

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

如果您需要真正的安全性 - 我建议您按照 Grumbler85 的建议进行操作。

于 2012-10-05T08:16:37.803 回答
-1

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

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

于 2012-10-05T08:02:46.230 回答