使用php验证/拒绝访问目录中的文件

时间:2010-02-24 17:32:20

标签: php authentication file

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

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

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

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

谢谢!

2 个答案:

答案 0 :(得分:1)

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


相反,我会:

  • 拒绝对文件的任何访问权限 - 即使用包含.htaccess的{​​{1}}文件
    • 这样,没有人可以访问文件
    • 这意味着每个人都必须使用其他方式来获取文件,而不是直接网址。
  • 开发一个PHP脚本:
    • 接收文件标识符(例如文件名;或某些可与文件对应的标识符)
    • 针对存储在数据库中的数据对用户(带有一些登录/密码字段)进行身份验证
    • 如果用户有效,并且可以访问文件(这是因为不同的用户无权访问同一组文件),请从PHP中读取文件的内容脚本,并将其发送给用户。

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


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

答案 1 :(得分:0)

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