【问题标题】:restricting access to static content/authenticating via htaccess with PHP?使用 PHP 限制对静态内容的访问/通过 htaccess 进行身份验证?
【发布时间】:2010-08-14 00:43:49
【问题描述】:

我正在使用 php/apache 开发一个 LMS 解决方案,该解决方案采用 SCORM 文件并以 http://www.example.com/courses/course1/index.html 格式输出课程供用户学习

任何人都可以访问 LMS 本身,而且由于课程内容是静态 html,我似乎没有太多关于身份验证的选项。

我原本以为在文件夹中创建一些 htaccess/htpasswd 文件就可以了,但是我看不到在 php 中验证用户的方法,因此每次他们想要查看时都不会显示密码提示当然 - 他们之前已经在我的应用程序中进行了身份验证。

有谁知道保护静态内容的最佳方法,以便授权(通过我的 php 应用程序)用户可以正常查看内容,但其他人什么都看不到?

【问题讨论】:

    标签: php authentication


    【解决方案1】:

    如果 PHP 自己处理登录,最简单的选择是通过 PHP 自己提供内容。

    您可以将静态文件放在未映射到 URL 空间的目录中,或者放在拒绝所有请求的目录后面的映射 URL 中,然后使用 readfile

    //request to /download_static.php?file=xxxx.rtf
    if (!has_access())
        die("unauthorized");
    
    if ($f = filter_input(INPUT_GET, 'file', FILTER_SANITIZE_STRING,
            FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH)) {
        if (strpos($f, "/") || strpos($f, "..") || !file_exists("statics/$f"))
            die("no such file");
    } else {
        die("invalid request");
    }
    header("Content-type: application/rtf"); //or whatever
    //can also sent e-tag, last modified, size...
    
    readfile("statics/$f");
    

    另一种选择,唯一可用的是将 PHP 作为 Apache 模块安装,进行身份验证,然后调用 virtual

    【讨论】:

      猜你喜欢
      • 2018-03-17
      • 1970-01-01
      • 2023-03-20
      • 2011-09-09
      • 1970-01-01
      • 1970-01-01
      • 2022-08-24
      • 2010-12-15
      相关资源
      最近更新 更多