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

使用php验证/拒绝访问目录中的文件,php,authentication,file,Php,Authentication,File,我有一个登录用户可以上传和访问的文件目录。有些文件是公共的,有些是私有的,仅供内部访问。文件名和访问设置保存在数据库中 有谁能给我一些资源或给我举个例子,说明我如何使用会话数据(和.htaccess?)只允许授权用户访问私有文件 我认为将公共文档保存在一个单独的、不受保护的目录中可能更容易,尽管我有点希望将所有内容都保存在一起 我不关心顶级安全性或加密,因为这些文件并不十分敏感,但我想防止它们在搜索引擎上被索引,等等 谢谢 我想我不会为此使用.htaccess(或任何类型的HTTP身份验证):.

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

有谁能给我一些资源或给我举个例子,说明我如何使用会话数据(和.htaccess?)只允许授权用户访问私有文件

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

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


谢谢

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


相反,我会:

  • 拒绝对文件的任何访问--即使用
    .htaccess
    文件,该文件包含
    Deny from All
    • 这样,就没有人可以访问该文件
    • 这意味着每个人都必须使用另一种方式来访问文件,而不是直接的URL
  • 开发一个PHP脚本,该脚本将:
    • 接收文件标识符(例如,文件名;或与文件相对应的某个标识符)
    • 根据数据库中存储的数据对用户进行身份验证(使用一些登录/密码字段)
    • 如果用户是有效的,并且有权访问该文件(如果不同的用户无权访问同一组文件),则从PHP脚本中读取该文件的内容,并将其发送给用户
优点是您的PHP脚本可以访问DB——这意味着它可以允许用户登录、注销、使用会话


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


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


相反,我会:

  • 拒绝对文件的任何访问--即使用
    .htaccess
    文件,该文件包含
    Deny from All
    • 这样,就没有人可以访问该文件
    • 这意味着每个人都必须使用另一种方式来访问文件,而不是直接的URL
  • 开发一个PHP脚本,该脚本将:
    • 接收文件标识符(例如,文件名;或与文件相对应的某个标识符)
    • 根据数据库中存储的数据对用户进行身份验证(使用一些登录/密码字段)
    • 如果用户是有效的,并且有权访问该文件(如果不同的用户无权访问同一组文件),则从PHP脚本中读取该文件的内容,并将其发送给用户
优点是您的PHP脚本可以访问DB——这意味着它可以允许用户登录、注销、使用会话


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


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

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

谢谢!我正在考虑这样一种方法,但我的印象是“拒绝所有人”也会阻止php与文件交互;但是在PHP上没有(只要您的PHP脚本不在包含
Deny from all
的目录中,当然,因为您的PHP脚本是由Apache提供的)谢谢!我正在考虑这样一种方法,但我的印象是“拒绝所有人”也会阻止php与文件交互;但是在PHP上没有(当然,只要PHP脚本不在包含
Deny from all
的目录中,因为PHP脚本由Apache提供服务)