Apache проверяет, просматривает ли пользователь свой домашний каталог - PullRequest
0 голосов
/ 27 сентября 2019

Например, у меня есть корневой каталог веб-сервера / var / www / .И домашний каталог пользователя: / var / www / testuser / .У меня также настроена базовая авторизация, поэтому есть пользователь с именем пользователя testuser, который успешно авторизовался.Как я могу проверить, просматривает ли тестовый пользователь свой домашний каталог с помощью одного веб-сервера?Вот как далеко я ушел:

# Getting "testuser" out of "/testuser/echo.php"
SetEnvIf Request_URI ^/(.*)/ URI_HOME=$1

# Getting base64 encoded part out of Authorization header
SetEnvIf Authorization "^Basic (.*)$" X_HTTP_AUTHORIZATION=$1

# Converting base64 part to plain text, extracting username and comparing it with home directory 
SetEnvIfExpr "tolower(unbase64(%{ENV:X_HTTP_AUTHORIZATION})) == %{ENV:URI_HOME}" USER_IS_IN_HOME_DIR

Основная проблема в том, что Apache не настроил REMOTE_USER на этапе, когда SetEnvIf ,Поэтому мне абсолютно необходимо проанализировать заголовок Authorization из запроса.Я почти сделал это, но мне нужно вырезать часть за столбцом, чтобы сравнение было правильным.

Как я могу это сделать?

1 Ответ

0 голосов
/ 27 сентября 2019

Кажется, работает следующее:

SetEnvIf Request_URI ^/(.*)/ URI_HOME=$1

SetEnvIf Authorization "^Basic (.*)$" X_HTTP_AUTHORIZATION=$1

SetEnvIfExpr "unbase64(%{ENV:X_HTTP_AUTHORIZATION}) -strcmatch '%{ENV:URI_HOME}:*'" USER_IS_IN_HOME_DIR

Есть идеи, как его улучшить?

...