ограничение доступа к статическому контенту / аутентификация через htaccess с PHP? - PullRequest
0 голосов
/ 13 августа 2010

Я разрабатываю решение LMS с php / apache, которое берет файлы SCORM и выводит курсы для пользователей в формате http://www.example.com/courses/course1/index.html

Сама LMS будет доступна любому и как курссодержимое является статическим html. У меня не так много вариантов аутентификации.

Первоначально я думал, что создание некоторых файлов htaccess / htpasswd в папке будет в порядке, но я не вижу способа аутентификацииПользователь в php, поэтому ему не показывается приглашение на ввод пароля каждый раз, когда он хочет просмотреть курс - он уже прошел проверку подлинности в моем приложении ранее.

Кто-нибудь знает лучший метод защиты статического содержимого, чтобыавторизованные (моим приложением php) пользователи могут нормально просматривать контент, но все остальные ничего не видят?

1 Ответ

1 голос
/ 13 августа 2010

Если 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...