【问题标题】:http file access and php sessionshttp 文件访问和 php 会话
【发布时间】:2010-08-30 18:48:00
【问题描述】:

如果站点有 php 会话来强制对站点上用 php 实现的页面进行身份验证/授权,那么相同的逻辑如何强制访问某些文件。

让我们说一个目录中的文件存储库。因此 /var/www/html/ 是通过身份验证保护的,但是,此 PHP 身份验证逻辑不会禁止用户简单地转到 http://site.com/someDirectory/fileIShouldNotAccess.txt 并拉取该文件。

您如何将 php 会话和身份验证与 apache 结合起来以强制执行这种类型的行为?

【问题讨论】:

    标签: php apache http


    【解决方案1】:

    由于用户请求非 PHP 文件时不会调用 PHP,因此您不能让 Apache 强制执行 PHP 的访问保护。您可以在 Apache 中进行非常粗略且易于伪造的检查,以确保存在会话 ID cookie,但这是非常不安全的。它只是检查 cookie 是否存在,而不是它代表一个有效的会话或用户是否实际被授予访问权限。

    这个其他答案可能会有所帮助。 Using PHP/Apache to restrict access to static files (html, css, img, etc)。基本上,您通过 PHP 脚本提供所有受保护的内容,而不是提供直接访问。

    【讨论】:

      【解决方案2】:

      几个答案:

      1) 使您的 php 会话使用 HTTP 身份验证。然后您可以使用 .htaccess 文件来控制目录中的文件访问

      2) 使用 mod_rewrite 将所有请求重定向到“前端控制器”。让前端控制器管理访问是允许、拒绝还是转发到不同的控制器模块进行进一步处理。

      【讨论】:

      • 您能否再解释一下 1,在我看来,与 1 相比,2 需要更多的工作,对吗?
      • 基本上,您要确保将 php 作为 apache 模块运行。然后,此链接会为您填写确切的标头以启动基于 http 的身份验证:php.net/manual/en/features.http-auth.php
      【解决方案3】:

      您可以尝试使用 PHP 进行 HTTP 身份验证。这个article 可能会有所帮助。

      【讨论】:

      • 如果可能使用 LDAP 或 Shibboleth 等外部身份验证,这将如何工作?
      猜你喜欢
      • 1970-01-01
      • 2013-11-21
      • 1970-01-01
      • 1970-01-01
      • 2011-08-20
      • 2011-02-23
      • 2016-12-25
      • 1970-01-01
      相关资源
      最近更新 更多