限制文件下载php

我的代码中有这个:

<a href = "res/pdf/sample.pdf">Sample PDF</a>

所以基本上它似乎是文件’sample.pdf’的下载链接,但问题是,下载此文件有一个限制.因此,每当上传机密报告并且恶意用户在浏览器历史记录中意外记忆或查看下载链接的URL时,即使不访问网站也可轻松下载,因为它是直接链接.我该怎么做才能保护这个链接?或仅为分配给它的用户下载?

解决方法:

不要通过直接URL提供文件.让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

上一篇:java – 基于输入参数标准的Spring安全性authrorize


下一篇:c# – 单元测试AuthorizationHandler