【问题标题】:Authentication / Denying access to files in directory with php身份验证/拒绝使用 php 访问目录中的文件
【发布时间】:2011-01-20 15:32:35
【问题描述】:

我有一个登录用户可以上传和访问的文件目录。一些文件是公开的,而另一些是私有的——仅供内部访问。文件名和访问设置保存在数据库中。

谁能给我一些资源或向我展示我如何使用会话数据(和 .htaccess?)来只允许授权用户访问私人文件的示例?

我认为将公共文档保存在一个单独的、不受保护的目录中可能会更容易,尽管我希望将所有内容放在一起。

我不关心顶级安全或加密,因为这些文件不是非常敏感,但我想防止它们在搜索引擎等上被索引。

谢谢!

【问题讨论】:

    标签: php authentication file


    【解决方案1】:

    我想我不会为此使用 .htaccess (或任何类型的 HTTP 身份验证):当您想要允许/拒绝访问整体时,.htaccess / .htpasswd 非常棒目录,而不是特定文件。


    相反,我会:

    • 拒绝对文件的任何访问——即使用包含Deny from All.htaccess 文件
      • 这样,没有人可以访问该文件
      • 这意味着每个人都必须使用其他方式来获取文件,而不是直接 URL。
    • 开发一个 PHP 脚本:
      • 接收文件标识符(例如文件名;或可以与文件对应的一些标识符)
      • 根据存储在数据库中的数据验证用户(使用一些登录名/密码字段)
      • 如果用户是有效的,并且可以访问文件(这是如果不同的用户不能访问同一组文件),从你的 PHP 中读取文件的内容脚本,并将其发送给用户。

    优点是您的 PHP 脚本可以访问数据库——这意味着它可以允许用户登录、注销,它可以使用会话,...


    关于“从 PHP 发送文件”,这里有几个问题可能会带来一些启发:

    【讨论】:

    • 谢谢!我正在考虑这样的方法,但我的印象是“全部拒绝”也会阻止 php 与文件交互。
    • 否:Deny from all 对 Apache 有影响;但在 PHP 上没有(只要你的 PHP 脚本不在包含 Deny from all 的目录中,当然,因为你的 PHP 脚本是由 Apache 提供的)
    【解决方案2】:

    我会在 PHP 中创建一个自定义索引脚本——动态显示文件的东西。使用它来只保留列出的正确文件——之后,进一步保护文件,动态获取文件内容——Pascal MARTIN 的链接向您展示了如何使用 PHP 来控制文件流,您可以使用它来阻止来自隐藏的访问文件发给不应访问的用户。

    【讨论】:

      猜你喜欢
      • 2019-12-12
      • 1970-01-01
      • 2016-03-15
      • 1970-01-01
      • 2017-11-28
      • 1970-01-01
      • 2018-01-06
      • 2023-03-31
      • 2015-01-26
      相关资源
      最近更新 更多