Apache 检查用户是否正在浏览其主目录



例如,我有web服务器的根目录/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在SetEnvif工作时没有在舞台上设置REMOTE_USER。 所以我绝对必须从请求中解析授权标头。 我几乎做到了,但我必须逐列地剪掉才能正确进行比较。

我该怎么做?

以下内容似乎有效:

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

有什么想法可以改进吗?

最新更新