允许用户从webroot外部下载文件

时间:2016-06-24 17:47:49

标签: php webserver

我有一个文件夹,我存储了大量机密文件,我在用户登录时对其进行身份验证,但我只希望他们能够下载特定文件。

如何使用apache / php或其他方式检索文件,最好是为文件提供下载链接,而不将文件夹移入webroot,将文件存储在数据库中或在PHP中读取文件然后随地吐痰它退回给他们,这似乎浪费了CPU时间?

2 个答案:

答案 0 :(得分:0)

这是一个需要考虑的框架,就像实现方法一样。您的目标:"证明某人能够下载仅适用于他们的文件。"可以创建到某种形式的框架中的快速解决方案:"根据预定义的标准创建文件的特定校验和。"在实践中:

sh-3.2# cd /var/www
sh-3.2# mkdir `echo "Clientname" | shasum5.16 | tail -n 1 | awk '{print $1}'`
sh-3.2# ls
2acdddd6c15cf298f6b4f0f74050524842dbeff9
sh-3.2# cd 2acdddd6c15cf298f6b4f0f74050524842dbeff9/
sh-3.2# mkdir `echo "John Doe" | shasum5.16 | tail -n 1 | awk '{print $1}'`
sh-3.2# mkdir `echo "Jane Doe" | shasum5.16 | tail -n 1 | awk '{print $1}'`
sh-3.2# ls
732979cbd4216928eba0a46c51df458687d949b4    77b39a39ca4e50b5c36014dc99aa46237fc4c064

在第一行,我们转到我们的webroot目录。第二行,我们为我们持有文件的公司制作校验和。 (可以是包括我们自己在内的任何公司。)第三行,我们进入该目录。现在,我们为该公司的用户创建特定目录。我们可以存储特定人员的信息,而无需担心他们猜测另一个目录。它非常简单有效,无需在权限,群组等方面跳过障碍和障碍。

答案 1 :(得分:0)

听起来您主要关注的是向正确的授权用户提供文件。为此,请查看Apache的X-Sendfile或Nginx的X-Accel-Redirect。只有当应用程序在响应时为Web服务器提供正确的标头时,才允许访问某个目录中的文件。