向用户显示PDF

时间:2009-12-05 00:27:54

标签: security forms pdf

我们提供一个网络表单,用户可以填写他们的个人信息;其中一些是敏感信息(SSN,生日等)。用户提交后,数据将预先填入PDF格式,然后通过链接提供。

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

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

也许PDF文件夹只具有特定于用户的权限,但这可能是一个不同的问题,如何实现。 (用户数量未知,因为这将向公众开放)。

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

谢谢!

4 个答案:

答案 0 :(得分:1)

尝试模糊文件的路径并不能确保其安全。我会找到一种方法来通过电子邮件或其他方式为用户获取它,而不是允许访问打开的目录。

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

请记住,混淆不是真正的安全。

答案 1 :(得分:0)

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

您的网络应用程序是否具有该目录的写权限(我假设您正在谈论chmod用户权限)并不重要,它不能通过Web服务器违反,我看不到揭示目录路径本身的问题 - 您必须在向用户提供要下载的URL时透露一些内容。如果您的PDF名称足够随机,那么几乎没有人能够猜到同一目录中另一个PDF文件的名称。

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

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

答案 2 :(得分:0)

出于pdf的目的,是不是更好(我知道我会因为这个而受到抨击)将实际的pdf作为BLOB存储到数据库中,BLOB将在后面 - 有问题的网站的结尾?

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

希望这有帮助, 最好的祝福, 汤姆。

答案 3 :(得分:0)

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

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