在浏览器中显示文件而不显示其位置

Posted

技术标签:

【中文标题】在浏览器中显示文件而不显示其位置【英文标题】:Displaying a file in browser without revealing its location 【发布时间】:2014-04-07 20:11:53 【问题描述】:

我目前正在从事一个可以最好地描述为在线 pdf 库的项目。

用户可以登录并查看可用的 pdf 列表。用户可以点击一个“检查”

这样他们就可以在特定时间段内查看 pdf 文件,之后该文件将无法再访问。

有两个重要的规则:

    用户只能通过网站查看pdf,不能复制 时间到期后,用户将无法再查看 pdf

我正在考虑使用 swftools 将 pdf 转换为 swf 以禁止用户保存 pdf。但我还有一个安全问题:

如何在浏览器中显示 swf 而不显示其位置?

感谢您花时间回答这个问题。如果我需要指定任何内容,请告诉我。

【问题讨论】:

换句话说,“我如何使用 DRM 锁定我的 PDF 文件,因为 DRM 如此烦人且无处不在,以至于我的业务将崩溃,因为客户讨厌这项具有千亿太阳燃烧热情的服务并去而不是竞争对手的网站?” 可能的解决方案:用于 swf 文件的 tmp 目录。您每次都将复制它(并且可以在请求它们的多个用户之间共享其中一个文件),一段时间后只需在 CRON 或其他东西上删除此文件 【参考方案1】:

使用定时网址。这是不安全的版本:

  http://www.example.com?file=123&expires=2014-03-06

现在,为了不那么明显,将这两个参数编码为一个变量并使其看起来像文件名:

  http://www.example.com/123-2014-03-06.pdf

但更进一步,将值散列/编码为类似 guid 的东西。

您也可以在服务器端执行此操作,方法是发出一个真正的 guid 并将文件名和到期时间与该值相关联。

【讨论】:

原谅我的无知,网址是如何计时的? 您的服务器需要从 url/hash 解析日期并决定是否提供文件。

以上是关于在浏览器中显示文件而不显示其位置的主要内容,如果未能解决你的问题,请参考以下文章

如何使用CakePdf创建和下载PDF,而不是在浏览器中显示它

smartgwt 保存图像文件而不是在浏览器中显示

ASP.NET - 如何在浏览器中显示图像而不将图像保存在临时文件中?

在 iOS 中显示保存文件文档选择器而不提供本地文件 url

访问服务器,但是总下载文件,而不是在浏览器中显示

通过 AsyncTask 下载图像并将其显示在 Imageview 中而不存储在 sdcard 中