我正在尝试在客户端和用户之间创建安全的文件传输,通过该文件传输我有客户端上传文件,然后单击他们希望与用户共享的文件。
当客户端将url传递给用户时(我的url存储在数据库中),我的问题就来了 即:http://www.example.com/files/my-new-file.pdf
然后用户点击了URL,现在变得不安全,因为任何人在技术上都可以下载此文件。我该怎么做才能使这个文件只能被指定的用户下载。
我希望这对我正在尝试做的事情有所了解,并且我正在努力确保这些文件是安全的。任何想法都将不胜感激。
答案 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)
希望这对你有所帮助。
答案 2 :(得分:0)
我相信为注册用户添加安全首选项会使事情有效。 您需要让用户登录才能上传文件。
否则,每当有人上传文件时,询问他/她的电子邮件地址并发送一个字符串密钥(由服务器随机生成并映射到上传的文件),该密钥可以由想要下载的用户使用。< / p>
与上传者想要分享的用户分享该密钥...