0

我正在建立一个文件共享网站,我想问一个关于安全性的问题。我的系统像这些网站一样工作:FileFlyerShareFlareLetItBit

当用户想要下载一个文件时,他需要购买一个密钥,然后他才能“解锁”该文件并下载它。

问题:一个用户购买密钥并解锁文件后,他可以与所有人共享下载链接。

我的解决方案:当用户解锁文件时,我会将他的 IP、文件 ID 和生成的随机 ID 插入到 SQL 表中。下载链接将是一个 PHP 文件,下载 id 作为 GET 参数。在下载链接中,我将检查用户的 IP 是否匹配。如果是这样,我会放一个readfile函数,然后开始下载。

我的问题:这足够安全吗?如果不是 - 为什么?还有一件事 - 我将如何拒绝访问文件路径?例如,如果文件路径是www.SITE.com/files/file.rar,我不希望文件可以从那里访问。

4

2 回答 2

0

根据您的评论,如果您不允许通过 httpd.conf 访问目录,这将避免直接文件路径访问将解决您的问题,即在第一人称下载并复制静态 url 并尝试再次下载后,由于目录访问被拒绝,因此不会发生

于 2013-07-25T13:10:35.907 回答
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();
于 2013-07-26T08:10:57.750 回答