2009-12-05 57 views
2

我们正在提供一个网页表单,用户可以填写他们的个人信息;其中一些是敏感信息(SSN,生日等)。用户提交后,数据预先填充到PDF中,然后通过链接提供。向用户显示PDF

我们正在创建一个文件夹,在网站上有写权限的PDF。

我们如何安全地在这个文件夹中创建和添加PDF,并使用任何命名方案(使用GUID?),以便其他用户无法猜测/欺骗PDF文件的位置,在URL中输入以及访问另一个人的PDF ?

也许PDF文件夹只具有特定于用户的权限,但这可能是完成这个过程的另一个问题。 (用户数量未知,因为这将向公众开放)。

对此有何看法?在坚果壳中,我们需要允许用户查看他们刚刚输入的数据的PDF,同时防止更精明的用户找出PDF文件的位置,从而允许访问其他文件。

谢谢!

回答

1

试图混淆文件的路径并不能真正保证文件的安全。我会找到一种通过电子邮件或其他方式为用户提取的方式,而不是允许访问打开的目录。

使Web应用程序为用户获取文件,而不是依赖Web服务器打开的文件夹权限。

只要记住混淆并不是真正的安全。

0

如果确实只是暂时的,请在临时目录中创建一个完全随机的文件(20384058532045850.pdf),并立即将其提供给用户,并在一段时间后将其删除。

无论您的网络应用程序是否具有该目录的写权限(我假设您正在谈论chmod用户权限)并不重要,它不能通过Web服务器被突破,并且我没有发现问题揭示目录路径本身 - 你必须透露给用户一个URL下载的东西。如果您的PDF名称足够随意,则实际上没有人能够猜测同一目录中另一个PDF文件的名称。

由于PDF包含敏感数据:不要忘记关闭缓存,以防止本地副本保存在客户端的浏览器缓存中。

我不确定是否通过适当的标头关闭缓存足以阻止所有浏览器中的本地缓存。你可能需要研究一下。

0

对于pdf的目的,它会不会更好(我知道我会因为这个而燃起火花)将实际的pdf作为一个BLOB存储在数据库中,该BLOB将位于网站的后端有问题吗?

在任何地方都不会引用URL,也不会在该表单的任何链接中突出显示特定的路径。

希望这会有所帮助, 最好的问候, 汤姆。

0

最简单的方法是通过应用程序代理文件(例如,在php中使用fpassthru()),这允许您使用您已经用于动态内容的访问控制/识别系统。

如果您没有任何方法来识别您的用户并限制访问权限,并且假设您的平台具有安全的会话机制,则可以通过将文件名存储在用户会话中然后返回该文件来保护该文件(以及只有该文件)在请求时发送给用户。这应该意味着攻击者必须欺骗会话才能访问文件,所以这应该与会话机制一样安全。