我可以配置 Apache httpd 來刪除/替換所有與模式相符的請求標頭嗎?

我可以配置 Apache httpd 來刪除/替換所有與模式相符的請求標頭嗎?

我使用 Apache httpd 作為 Web 應用程式前面的反向代理。身份驗證由模組 (mod_auth_mellon) 執行,該模組設定各種請求環境變量,其中包含有關經過身份驗證的使用者的詳細資訊(使用者名稱、顯示名稱等)。

我使用 mod_headers 從傳入請求中刪除標頭,並將其替換為 mod_auth_mellon 設定的請求環境變數的值。

RequestHeader unset mellon_uid
RequestHeader set mellon_uid "%{mellon_uid}e" env=mellon_uid

因此,任何客戶端提供的mellon_uid標頭都會被丟棄。如果 mod_auth_mellon 認為使用者已登錄,則新的mellon_uid請求標頭將會加入到傳送到 Web 應用程式的請求中。

到目前為止,我已經透過使用 mod_macro 使其變得易於管理:

Use Attribute uid
Use Attribute display_name
Use Attribute email

……等等,哪裡Attribute有一個擴展為兩個的宏RequestHeader是一個宏,可擴展為上面提供的屬性的

但是,某些使用者詳細資料是多值的,mod_auth_mellon 為此設定多個以下形式的請求環境變數:

mellon_foo_0 = first
mellon_foo_1 = second
mellon_foo_2 = third
mellon_foo_N = 3

由於屬性的值的數量可能會有所不同,因此我不能依賴靜態變數列表來進行這樣的處理。

我想避免使用MellonMergeEnvVars,而是設定以下內容:

mellon_foo = first;second;third
mellon_foo_N = 3

……因為這意味著 Web 應用程式現在必須處理正確解析mellon_foo請求標頭、處理本身包含分號的值等的複雜性。不可能(如果我是對的......)

答案1

我認為只要您只查看第一個mellon_foo_N值,這裡就不應該有任何風險,因為 mod_auth_mellon 將始終自行設定這些值,從而覆蓋用戶可能嘗試發送的任何值。它也應該始終設置mellon_foo_N,但您可以始終在最初取消設定以確保確定。

相關內容