我正在建立一个文件共享网站,我想问一个关于安全性的问题。 我的系统就像这些网站一样:FileFlyer,ShareFlare和LetItBit。
当用户想要下载文件时,他需要购买一个密钥,然后他就可以“解锁”该文件并将其下载。
问题:在用户购买密钥并解锁文件后,他可以与所有人共享下载链接。
我的解决方案:当用户解锁文件时,我会将他的IP,文件ID和生成的随机ID插入到SQL表中。下载链接将是一个PHP文件,其下载ID为GET参数。在下载链接中,我将检查用户的IP是否匹配。如果是,我将放置一个readfile
函数,然后开始下载。
我的问题:这是否足够安全?如果不是 - 为什么?还有一件事 - 我将如何拒绝访问文件路径?例如,如果文件路径为www.SITE.com/files/file.rar
,我不希望文件可以从那里访问。
答案 0 :(得分:0)
如果您不允许通过httpd.conf访问目录,这将避免直接文件路径访问将解决您的问题,即在第一个人下载并复制静态URL并尝试再次下载之后将不会发生,因为目录访问已经被拒绝
答案 1 :(得分:0)
您可以将文件移到文档根目录之外,然后当用户想要下载文件时,您可以通过PHP使用文件读取功能将其流式传输。这听起来合理吗?
这样的事情:
<?php
// Remember to have path outside document root:
$filename = "/path/to/file";
header("Content-Disposition: atachment; filename=".$filename);
header("Content-Type: application/octet-stream");
header("Content-Length: ".filesize($filename));
header("Pragma: no-cache");
header("Expires: 0");
$fp=fopen($filename,"r");
print fread($fp,filesize($filename));
fclose($fp);
exit();