【问题标题】:Displaying PDF to user向用户显示 PDF
【发布时间】:2010-12-23 11:04:34
【问题描述】:

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

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

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

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

对此有什么想法吗?简而言之,我们需要允许用户查看他们刚刚输入的数据的 PDF,同时防止更精明的用户找出 PDF 文件的位置,从而允许访问其他文件。

谢谢!

【问题讨论】:

    标签: security forms pdf


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      出于 pdf 的目的,将实际的 pdf 作为 BLOB 存储到数据库中不是更好(我知道我会为此感到愤怒),这将在后面 -有问题的网站结束?

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

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

      【讨论】:

        【解决方案3】:

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

        您的网络应用程序是否对该目录具有写入权限(我假设您在谈论chmod 用户权限)并不重要,它不能通过网络服务器被破坏,我没有看到问题在显示目录路径本身时 - 您必须在为用户提供下载 URL 时显示一些内容。如果您的 PDF 名称足够随机,则几乎没有人能够猜测同一目录中另一个 PDF 文件的名称的风险。

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

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

        【讨论】:

          【解决方案4】:

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

          让网络应用为用户获取文件,而不是依赖网络服务器打开文件夹的权限。

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-06-02
            • 2019-08-11
            • 2023-03-16
            • 1970-01-01
            • 2021-06-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多