繁体   English   中英

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

[英]Allow users to download files from outside of webroot

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

如何使用apache / php或其他方法检索文件,最好是给他们提供文件的下载链接,而无需将文件夹移到webroot中,将文件存储在数据库中或从PHP中读取文件,然后将其吐出来对他们来说,这似乎是在浪费CPU时间?

这是作为类似于方法实现的框架的思考。 您的目标:“证明某人能够下载仅适用于他们的文件。” 可以在某种形式的框架中创建的快速解决方案:“根据预先定义的标准在特定位置创建文件的校验和”。 在实践中:

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目录。 第二行,我们对要保存文件的公司进行校验和。 (可以是任何公司,包括我们自己的公司。)第三行,我们进入该目录。 现在,我们为该公司中的用户创建特定目录。 我们可以为特定的人存储信息,而不必担心他们猜测另一个目录。 它既简单又有效,而不必在权限,组等方面跳过障碍。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM