【问题标题】:Help securing files access with htaccess and php?使用 htaccess 和 php 帮助保护文件访问?
【发布时间】:2010-04-04 03:51:15
【问题描述】:

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

我正在使用 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(或类似的东西)发送用户名和密码组合,但我不知道从哪里开始。

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

【问题讨论】:

    标签: php .htaccess file-access


    【解决方案1】:

    使网络服务器在任何情况下都不提供文件,否则所有检查都没有实际意义。最好的方法是将它们放在 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
    

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

    【讨论】:

    • 我从来没想过。效果很好,就像你说的,这些文件不能通过直接 url 提供。非常感谢。
    【解决方案2】:

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

    【讨论】:

    • 我以前从未逐案提供文件,我想知道是否有任何与之相关的标准做法。
    【解决方案3】:

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

    .htaccess 文件:

    <Files *>
        Order Deny,Allow
        Deny from all
        Allow from localhost
    </Files>
    
    RemoveHandler .php .php3 .phtml .cgi .fcgi .pl .fpl .shtml
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多