1

我正在一个允许用户购买数字内容的网站上工作,并实施了一种尝试提供安全下载的方法。

我正在使用 CodeIgniter 强制下载如下:

$file = file_get_contents($path);

force_download("my_file_name.zip", $file);

当然,我确保用户在提供下载之前可以使用数据库访问文件,但我想知道是否有办法让这些文件更安全。

我正在使用大约 8-10 个字母键来创建文件路径,因此文件的 url 并不是很容易弄清楚......就像http://mysite.com/as67Hgr/asdo0980/uth89.zip代替http://mysite.com/downloads/my_file.zip.

另外,我使用 .htaccess 来拒绝目录浏览,如下所示Options All -Indexes

除此之外......我不知道要采取什么步骤。我看过文章建议使用 .htaccess 的用户名和密码方法,但我不明白如何绕过使用该方法会出现的密码提示。

我希望可能有一种方法可以使用标题和cUrl(或类似的东西)发送用户名和密码组合,但我不知道从哪里开始。

任何帮助将不胜感激。提前致谢!

4

3 回答 3

4

让它在任何情况下都不让网络服务器提供文件,否则所有的检查都是没有意义的。最好的方法是将它们放在 webroot 之外的某个地方。IE:

/
  webroot/         <- root web directory, maybe named www or similar
    index.php      <- your app, served normally
    …other serve-able files…
  files/           <- not part of the serve-able webroot dir
    secret_file    <- web server has no access here

然后,如果访问它们的唯一方法是通过您的脚本,那么它与您编写脚本一样安全。

于 2010-04-04T03:58:51.380 回答
1

为什么不只是Deny from All.htaccess?或者将文件放在 webroot 之上?那就足够了。但是您当前的设置已经很安全了。为什么你认为你需要任何帮助?

于 2010-04-04T03:58:12.183 回答
0

如果您希望它们只能从您的本地主机下载,.htaccess 应该看起来像这样。此外,它还删除了一些可能尝试访问任何文件的处理程序,以防万一。因此,只有您可以访问它。在其中存储一个 index.php 文件来检查另一个文件是否存在也是一个好主意,如果存在,则设置标题,如果不存在,则退出。

.htaccess 文件:

<Files *>
    Order Deny,Allow
    Deny from all
    Allow from localhost
</Files>

RemoveHandler .php .php3 .phtml .cgi .fcgi .pl .fpl .shtml
于 2010-04-04T05:15:05.110 回答