我的代码中有这个:
<a href = "res/pdf/sample.pdf">Sample PDF</a>
所以基本上它似乎是文件&#39; sample.pdf&#39;的下载链接。但问题是,下载此文件存在限制。因此,每当上传机密报告并且恶意用户在浏览器历史记录中意外记忆或查看下载链接的URL时,即使不访问网站也可轻松下载,因为它是直接链接。我该怎么做才能保护这个链接?或仅为分配给它的用户下载?
答案 0 :(得分:6)
请勿按其直接网址提供文件。让PHP脚本接收所需文件的文件名,并提供它。
所以,如果有人想下载上述文件,他会去
example.com/getfile?file=sample.pdf
您的PHP脚本会检查当前用户是否有权查看该文件,然后进行提供。
建立这样的链接:
<a href = "http://example.com/getfile?file=sample.pdf">Sample PDF</a>
您当前的方法对于敏感文件非常不安全。恶意用户可以轻而易举地编写脚本以下载res/pdf
中的所有文件。他需要做的只是检查目录中每个字母的排列,并丢弃所有404错误。
您不会重定向用户,因为这会破坏目的。您将使用相应的Content-disposition
标题将文件作为下载文件提供。
以下是一个示例:Fastest Way to Serve a File Using PHP
您可以谷歌并获得更多示例。
这是一个很好的例子,展示了如何提供PDF文件: https://serverfault.com/questions/316814/php-serve-a-file-for-download-without-providing-the-direct-link
答案 1 :(得分:0)
您可以限制使用htaccess