可以在不泄露完整URL的情况下提供对文档(.pdf)的查看和下载访问权限吗?

时间:2013-07-22 03:40:25

标签: security pdf download

是否可以授予用户访问.pdf文件的权限 - 这意味着允许他们下载例如点击按钮 - 而不会在此过程中显示完整的网址?

所以说我在www.mydomain.com/content/pdf/valuable_ebook.pdf

有一个档案

我想提供一个触发下载的链接,但只显示valuable_ebook.pdf,而不是完整路径(可以共享,导致无偿下载)。

我确实考虑创建该文件的副本,并暂时将其放在特定于某个下载链接的位置。但我想知道是否有更简单的方法来做到这一点。

就观看方式而言,我正在考虑制作一个iframe,它不会提供完整的网址......所以即使是“查看源代码”也无法轻松确定上面的完整网址。有没有办法实现这个目标?

当然可能有java或flash应用程序允许查看pdf(说到哪些 - 有没有人有一个很好的例子?)。

这样的应用程序是否有可能具有下载功能,但不会显示完整的URL?这将如何与浏览器通信?

或者是否可以通过.htaccess限制从上面访问URL,并且只有在您是注册/付费会员或其他什么的情况下,才能使用一些服务器端逻辑来授予访问权限?

我只是想知道是否有任何远程可能允许下载/查看文件而不泄露文件位置。

感谢有关浏览器如何与服务器通信以开始下载的任何想法或见解......

PS:我发现一旦你下载它就很容易分享一个数字项目,但我试图设置至少几个障碍来过滤任何泄漏。

部分回答: 我实际上找到了一个很好的解决方案下载文件,而没有提供源URL(至少没有我知道的任何东西 - 所以很大一部分用户可能不会知道它。)

// FILE www.mydomain.com/download.php

if($user_has_access_to_download == TRUE)
{
  $file = 'content/pdf/valuable_ebook.pdf';
  header('Content-Type: application/x-octet-stream');
  //header('Content-type: application/pdf');
    //wondering which is better?                
  header('Content-Disposition: attachment;filename="your_ebook.pdf"');
  header("Content-Length: " . filesize($file));
  // header("Connection: close"); 

  readfile($file);
}

指向www.mydomain.com/download.php的链接现在会触发下载,而不会泄露源文件。

现在我只需找到有助于查看的内容(而不是<iframe src="www.mydomain.com/content/pdf/valuable_ebook.pdf">)因为这会产生两个问题: 1.源URL可以很容易地被看到和共享 2.浏览器给出了“另存为”按钮 - 但我宁愿让它们通过我的download.php来跟踪... ...

可能我不得不尝试找一些Java应用来查看pdf ...

2 个答案:

答案 0 :(得分:1)

我会通过在网址中添加某种参数来处理此问题,以便您的新链接看起来像www.mydomain.com/content/pdf/valuable_ebook.pdf?code=abc123,其中abc123是您为链接输出的每个人的新随机值。显然,要使它超过6个字符。

然后将所有代码存储在数据库中。从这里你有几个选择。您只能为他们提供指定次数下载PDF的选项。当代码使用次数多于此时,也许他们可以联系您下载更多次,但您可以轻松地阻止任何共享该链接的人。

答案 1 :(得分:0)

PARTIAL ANSWER: 我找到了一个很好的解决方案下载文件而不提供源URL。在此处发布以获得完整性。

// FILE www.mydomain.com/download.php

if($user_has_access_to_download == TRUE)
{
  $file = 'content/pdf/valuable_ebook.pdf';
  header('Content-Type: application/x-octet-stream');
  //header('Content-type: application/pdf');
    //wondering which is better?                
  header('Content-Disposition: attachment;filename="your_ebook.pdf"');
  header("Content-Length: " . filesize($file));
  // header("Connection: close"); 

  readfile($file);
}

指向www.mydomain.com/download.php的链接现在会触发下载,而不会泄露源文件。

让我知道是否有一个超级简单的技巧来查找此方法的源URL,或者您有任何其他想法!