隐藏下载URL

Hide download URL

本文关键字:URL 下载 隐藏      更新时间:2023-09-26

我试图让用户看不到可下载PDF文档的URL,这样他们就无法从其他地方访问它。我需要在页面左下角隐藏URL(当他们鼠标悬停时),在浏览器打开地址栏时隐藏URL。我需要它在所有浏览器上工作。

我的HTML如下所示:

<a href="http://www.example.com/files/pdf/a34501.pdf">View PDF</a>

链接应该是这样的:

查看PDF

原因是用户必须提供一个代码才能下载他们的文档,但如果他们能看到URL,他们就可以很容易地下载其他人的文档(他们只需要在"a34501.pdf"部分更改一个数字)。

我读到一些关于使用JavaScript函数加密URL或使用外部PHP文件的内容。然而,我不知道该怎么做。

谢谢。

隐藏url会让最不懂技术的用户感到困惑,但不会让任何愿意下载你的文件并拥有最低技术知识的人感到困惑,如果你需要将文件隐藏在代码(或付费墙)后面,你可以使用PHP脚本来验证用户并吐出相应的文件,一个小例子如下:

if($validUser)
{
    $path = $fileName;
    $size = filesize($path);
    $fp = fopen($path, "rb");
    $content = fread($fp, $size);
    fclose($fp);
    header("Content-length: ".$size);
    header("Content-type: application/octet-stream");
    header("Content-disposition: attachment; filename=".$fileName.";" );
    echo $content;
}
exit();

这假设文件在服务器中具有物理性,但如果文件在数据库或任何其他存储介质中,则可以对其进行修改。当然,您必须首先验证用户是否有权下载该文件,但这取决于您。

您可以使用php脚本来提供文档,同时仍然允许php验证用户的会话信息等。

过程如下:

  1. 用户输入一个唯一的代码(在验证用户所需的附加身份验证之后)
  2. 生成一个唯一的文档链接,例如:http://domain/download.php?file=58afg71057ga82157(示例)
  3. download.php根据存储的会话信息验证用户请求——如果所有内容都检查出来,它会发送文件头()并传递文件内容

这个基本的文件下载教程提供了以这种方式提供文件的基本知识。您需要改进这个基本教程,但它应该让您了解这个过程是如何工作的。

建议:

  • 每个用户使用唯一的"密钥"(允许同一用户重新下载);或者
  • 一次性密钥,只允许一次下载;或者
  • 要求用户身份验证,以便您知道是否应该"允许"他们使用密钥
  • 不要使用"filename.ext"来定位要下载的文件,将名称存储在会话中或使用存储在数据库中的唯一标识符
  • 不要只是复制粘贴一个示例脚本,它们通常非常不安全