Apache-2.2

可以將 Apache 配置為需要基於查詢字元串的身份驗證嗎?

  • November 22, 2009

我已經為網站的某些區域配置了基本的 Apache 身份驗證,只有管理員才能訪問這些區域。大多數 Web 應用程序通過將它們的管理頁面放在一個子目錄中來實現這一點,因此我為該目錄配置了身份驗證,例如“/goodapp/admin”。問題是某些應用程序依賴於查詢字元串,例如。

/badapp/index.php?page=admin

有什麼方法可以根據查詢字元串將 Apache 配置為要求對這樣的 URL 進行身份驗證?

我對此進行了一些研究,但我認為 Apache 不會讓您以允許您有條件地要求身份驗證的方式匹配查詢字元串。您可以匹配目錄或文件,但不能匹配查詢字元串 AFAIK 中的項目(除非您正在執行 URL 重寫)。這是有道理的,因為您可能不希望應用程序邏輯位於 Web 伺服器配置中。

您可以做的是在任何具有管理功能的腳本前面加上這樣的檢查:

$isLoggedIn = array_key_exists('PHP_AUTH_USER', $_SERVER);
if (!$isLoggedIn && $isTryingToUseAdminFeature) {
 // redirect to login.php; this file has two properties:
 // 1) the apache conf requires authentication to access it
 // 2) it redirects the user back from whence they came
}

第二次,PHP_AUTH_USER應該設置,所以$isLoggedIn將是真的。然後在您的程式碼中,您可以有條件地顯示/允許管理功能。

引用自:https://serverfault.com/questions/87034