Если вы не изменили настройки, данные сеанса PHP хранятся в вариации собственного формата serialize () во временном каталоге, и это не так легко сделать без использования самого PHP.
к сожалению, вам, похоже, нужна скорость статических обслуживаемых файлов при динамической авторизации каждого запроса, что не является действительно совместимой целью. Вы можете сделать компромисс, имея сверхлегкий PHP-скрипт, который вы затем используете mod_rewrite для перезаписи запросов к файлам внутри него, который передает все, что в порядке. Супер простой пример:
.htaccess:
RewriteEngine On
RewriteMap auth prg:auth.php
RewriteRule (.*) ${auth:$1}
auth.php:
#!/usr/bin/php
<?PHP
set_time_limit(0); # This program needs to run forever.
$stdin = fopen("php://stdin","r"); # Keeps reading from standard in
while (true) {
$line = trim(fgets($stdin));
if (isset($_SESSION['USER_LOGGED_IN'])) {
echo $line\n";
} else {
echo "authfailed.html\n";
}
}
Примечательно, что этот PHP-скрипт работает вечно, поэтому я думаю, вам придется перезапустить apache, если вы его измените.
Это все не проверено, но это примерно то направление, в котором, я думаю, вам придется идти.
Ссылки:
Если у вас есть определенный cookie, который вы можете ожидать, то вы можете проверить его отсутствие с помощью mod_rewrite и выдать 403 Forbidden.
RewriteCond %{HTTP_COOKIE} !LoggedIn=true
RewriteRule .* - [F,L]
Но если кто-то знает, что ему нужен набор файлов cookie с «LoggedIn = true», то они могут легко обойти вашу «защиту».
Сессия PHP специфична для PHP. Apache не может использовать какую-либо информацию в сеансе PHP. Вам понадобится какой-то модуль аутентификации специально для проверки сеанса.
Я видел, что большинство людей делают, что PHP-скрипт обрабатывает подачу статического контента, так как он получает запрос, проверяет сеанс, читает файл и отправляет контент с соответствующей информацией MIME.
источник
Обычное решение этой проблемы - перенаправить каждый вызов в этой папке в файл php, который проверяет разрешения пользователя, и после этого он читает файл и отправляет его в выходной поток или перенаправляет пользователя на «нет разрешения» сайт. Например...
Еще один хитрый способ защитить ваши файлы - это сгенерировать токен из session_id и статической соли (и опционально из статического пути к файлу) и проверить его при обращении к файлу. Таким образом, вы должны восстановить этот токен в файле htaccess. Я не знаю, возможно ли это только с .htaccess, или вы должны использовать php для этого. Я нашел подобное решение здесь. Я на 99% убежден, что md5 не является встроенной функцией перезаписи модов.
источник
RewriteMap
наprg://…
ресурс сценария оболочки , который делает все фактическое шифрование MD5 и проверку. Мне нужно проверить это и убедиться, что он работает на моей установке, но похоже, что он должен работать с ванильным Apache + модуль mod_rewrite.Мой план решить эту проблему сейчас
Перенаправить запрос в PHP
Аутентифицировать пользователя в PHP (все другие методы аутентификации могут быть слишком слабыми или требуют постоянной записи в файлы)
Используйте Apache
mod_xsendfile
( документы , GitHub )источник
Да для Basic Auth, если вы используете mod_php. http://php.net/manual/en/features.http-auth.php
источник