我必须生成大约18,000个包含敏感信息的PDF。 PDF将通过Web应用程序提供给最终用户。显然,有些用户需要查看比其他用户更多的报告。我正在考虑提供PDF的两种方式是将每个PDF物理保存到Web应用程序下的目录或将PDF存储在数据库中。 PDF只能由授权用户查看,我不希望用户猜测URL以查看其他用户信息。但是我把这些信息放在数据库中有点犹豫。
比其他方式更优选吗?
答案 0 :(得分:6)
当两者都通过同一网站提供时,数据库中的PDF不比磁盘上的PDF更安全。除非您允许Web服务器像处理磁盘上的任何资源一样为PDF请求提供服务。在你的情况下,这将是一个坏主意。
我参与了一个有类似要求的项目。我们的文档存储在磁盘上(不能通过网站中的URL直接访问),它们的位置和安全信息存储在数据库中。
当请求进入文档时,我确定用户是否拥有该文档的权限(对数据库的查询),如果是,我将文件位置输出并直接通过响应流传递文件。
答案 1 :(得分:2)
不要将PDF存储在文档树中。将它们放在驱动器上的其他位置,用户无法输入URL,因为没有URL。然后,只有在验证用户有权查看它之后,才能以编程方式检索数据,然后从程序中返回字节。
或者,您可以在文档树中为每个用户创建一个单独的目录,并使用Web服务器安全性将密码放在这些目录上,例如Apache基本身份验证或服务器上的等效身份。这可能更简单,但如果用户可以以不一致的组合方式共享文档,即Al和Bob可以看到#1,Al和Cathy可以看到#2,Cathy和Dave可以看到#3等,这将无效。