2009-09-17 64 views
2

我必须生成大约18,000个包含敏感信息的PDF文件。 PDF将通过Web应用程序提供给最终用户。显然,一些用户需要看到比其他用户更多的报告。我想提供PDF的两种方式是将每个PDF物理地保存到Web应用程序下的目录或将PDF存储在数据库中。 PDF只能由经过授权的用户查看,我不希望用户猜测URL以查看其他用户的信息。但我有点犹豫是否把这些信息放入数据库中。安全生成的PDF

一种方式比另一种更受欢迎吗?

回答

6

当两者都通过同一个网站提供服务时,数据库中的PDF不会比磁盘上的PDF更安全。除非您允许您的Web服务器为PDF请求提供服务,就像磁盘上的任何资源一样。在你的情况下,这将是一个坏主意。

我参与过一个具有类似要求的项目。我们的文档存储在磁盘上(不能通过网站中的URL直接访问),它们的位置和安全信息存储在数据库中。

当请求进入文档时,我确定用户是否有权访问文档(对数据库的查询),如果有,我获取文件位置并直接通过响应流传送文件。

+0

还要确保在生成PDF时启用“不保存”和“不打印”选项。 – 2009-09-17 15:22:47

+0

您知道这些选项只是建议吗? – 2009-09-17 15:24:51

+0

是的,任何人都可以右键单击提供pdf的链接(或构建一个URL)并将其直接保存到磁盘。您可以打印任何您可以看到的内容(请参阅:剪切工具) – Will 2009-09-17 18:02:46

2

不要将PDF存储在文档树中。将它们放在驱动器的其他地方,因为没有URL,用户无法输入URL。然后,只有在验证用户有权查看它后,才能以编程方式检索数据,然后从程序中反馈字节。

或者,您可以为每个用户在文档树中创建一个单独的目录,并使用Web服务器安全性将密码放在这些目录中,例如Apache基本身份验证或任何等效服务器上的密码。这可能会更简单,但如果用户可以以不一致的组合方式共享文档,即Al和Bob可以看到#1,Al和Cathy可以看到#2,Cathy和Dave可以看到#3等,这是行不通的。

+0

当然,不要将文件放在文档根目录下 - 这意味着您必须限制对树部分的访问。取决于您的HTTP服务器,它可以使备份/恢复更直接。 – NVRAM 2009-09-17 16:22:49