2013-07-08 209 views
0

我试图做一个可下载的PDF文档对用户不可见的URL,让他们无法从其他任何地方访问它。我需要隐藏网页左下角的网址(鼠标悬停时)以及浏览器地址栏中的网址。我需要它在所有浏览器上工作。隐藏下载网址

我的HTML看起来像这样:

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

和链接应该是这样的:

View PDF

的原因是用户必须提供一个代码,可以下载他们的文件,但如果他们可以看到URL,他们可以轻松下载其他人的文档(他们只需要更改“a34501.pdf”部分中的一个数字)。

我读一些有关使用JavaScript函数加密的URL,或使用外部PHP文件。但是,我不知道该怎么做。

谢谢。

+2

您的整个架构都是错误的。您需要每个文档的唯一代码,而不是链接隐藏。即使你隐藏了链接,有人可以相对容易地找出网址并下载到他们心中的内容。 – Mansfield

+0

当人们上传时,使用salting和时间戳来创建唯一链接以及文件默认名称。另外:*问题必须证明对所解决问题的最小理解。告诉我们你试图做什么,为什么它不工作,以及它应该如何工作。* –

+0

听起来你不想直接使用链接,读取服务器的代码并输出文件1在正确的请求下, –

回答

3

您可以使用PHP脚本提供的文件,同时还允许PHP来验证用户的会话信息的/ etc。

的方法是这样的:

  1. 用户输入一个唯一的代码(后需要附加的认证以验证用户)。
  2. 的唯一文档链接产生,如:http://domain/download.php?file=58afg71057ga82157(例如)
  3. download.php验证对存储的会话信息的用户请求 - 如果一切正常,它发送文件头()和沿该文件的内容通过。

这个basic file download tutorial提供了以这种方式提供文件的基础知识。你将需要改进这个基本的教程,但它应该让你知道这个过程是如何工作的。

建议:

  • 采用了独特的“钥匙”每用户(允许相同的用户重新下载);或者,
  • 一次性只允许一次下载的一次性密钥;或者,
  • 需要用户身份验证,让你知道他们是否应该被“允许”使用的关键。
  • 不要使用“FILENAME.EXT”找到要下载的文件,无论是在会话存储的名称或使用存储在数据库中的唯一标识符。
  • 不要只是复制粘贴示例脚本,它们往往是极不安全。
+0

该链接引发错误,403 –

6

隐藏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(); 

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