我正在尝试在客户端和用户之间创建一个安全的文件传输,通过它我有客户端上传文件,然后单击他们希望与用户共享的文件。
当客户端将 url 传递给用户时,我的问题来了(此 url 存储在数据库中)即:http://www.example.com/files/my-new-file.pdf
因此,用户单击URL现在变得不安全,因为从技术上讲,任何人都可以下载此文件。我该如何使此文件只能由指定用户下载。
我希望这在我正在尝试做的事情中是有意义的,并试图确保这些文件是安全的。任何想法将不胜感激。
您应该使用 PHP 页面来控制对资源的访问,而不是让/files/目录直接通过 Web 服务器提供内容。
例如,一个简单的PHP页面可以从文件系统中读取文件并将其提供,以便将其下载到浏览器。
http://www.higherpass.com/php/Tutorials/File-Download-Security/
您需要确保:
-
只能下载有效文件
-
请求来自允许访问所请求文件的有效经过身份验证的用户
该 URL 中的简单示例容易受到 file 参数中的目录遍历的影响。您应该验证传递给 PHP 脚本的任何文件名,以防止"../.." 类型攻击。这实际上可能变得非常复杂。
可能对您有用的是拥有一个令牌系统,其中文件由唯一,复杂,随机令牌引用。数据库将实际文件位置存储在文件系统上,当收到请求(如/download.php?token=blah...查找 a) 令牌"blah"引用的文件的位置,以及 b) 允许调用用户的会话访问该文件。如果一切正常,请将文件提供给用户,否则引发错误并记录非法访问。
保护映像路径 - PHP
希望这对你有帮助。
向注册用户添加安全首选项将使事情顺利进行。您需要让用户登录才能上传文件。
否则,每当有人上传文件时,询问他/她的电子邮件地址并发送一个字符串密钥(由您的服务器随机生成并映射到上传的文件),该密钥可能被想要下载为密码的用户使用。
与上传者想要共享的用户共享该密钥...