使用htaccess和php帮助保护文件访问?

时间:2010-04-04 03:51:15

标签: php .htaccess file-access

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

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

$file = file_get_contents($path);

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

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

我正在使用大约8到10个字母键来创建文件路径,因此对文件的网址并不容易理解......类似于http://mysite.com/as67Hgr/asdo0980/uth89.zip而不是http://mysite.com/downloads/my_file.zip

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

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

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

非常感谢任何帮助。提前谢谢!

3 个答案:

答案 0 :(得分:4)

使它在任何情况下都不会为Web服务器提供服务,否则所有检查都没有实际意义。最好的方法是将它们放在webroot之外的某个地方。即:

/
  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

然后,如果访问它们的唯一方法是通过您的脚本,它就像您制作脚本一样安全。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

如果你希望它们只能从你的localhost下载,那么

.htaccess应该是这样的。此外,它删除了一些可能尝试访问任何文件的处理程序,以防万一。这样只有你才能访问它。另外一个好主意是在那里存储一个index.php文件来检查另一个文件是否存在,如果存在,则设置标题,如果没有,则退出。

.htaccess文件:

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

RemoveHandler .php .php3 .phtml .cgi .fcgi .pl .fpl .shtml