文件上传:下载时的用户安全性

时间:2011-05-08 06:27:00

标签: php security file-upload file

我正在尝试在客户端和用户之间创建安全的文件传输,通过该文件传输我有客户端上传文件,然后单击他们希望与用户共享的文件。

当客户端将url传递给用户时(我的url存储在数据库中),我的问题就来了 即:http://www.example.com/files/my-new-file.pdf

然后用户点击了URL,现在变得不安全,因为任何人在技术上都可以下载此文件。我该怎么做才能使这个文件只能被指定的用户下载。

我希望这对我正在尝试做的事情有所了解,并且我正在努力确保这些文件是安全的。任何想法都将不胜感激。

3 个答案:

答案 0 :(得分:1)

您应该使用PHP页面来控制对资源的访问,而不是让/ files /目录直接通过Web服务器提供内容。

例如,一个简单的PHP页面可以从文件系统中读取文件并进行处理,以便将其下载到浏览器中。

http://www.higherpass.com/php/Tutorials/File-Download-Security/

您需要确保:

  • 只能下载有效文件

  • 请求来自允许访问所请求文件的有效身份验证用户

该URL中的简单示例容易受到file参数中的目录遍历的影响。您应该验证传递给PHP脚本的任何文件名,以防止“../ ..”类型的攻击。这实际上可能变得非常复杂。

可能对你有用的是一个令牌系统,其中文件由唯一的,复杂的随机令牌引用。数据库将实际文件位置存储在文件系统上,当收到请求时,例如/download.php?token=blah ...您查找a)令牌“blah”引用的文件的位置,以及b)允许主叫用户的会话访问该文件。如果一切正常,请将文件提供给用户,否则引发错误并记录非法访问。

答案 1 :(得分:0)

  

Protect image path - PHP

希望这对你有所帮助。

答案 2 :(得分:0)

我相信为注册用户添加安全首选项会使事情有效。 您需要让用户登录才能上传文件。

否则,每当有人上传文件时,询问他/她的电子邮件地址并发送一个字符串密钥(由服务器随机生成并映射到上传的文件),该密钥可以由想要下载的用户使用。< / p>

与上传者想要分享的用户分享该密钥...