Apache-2.2

VirtualHosts 內部或外部的目錄?

  • March 15, 2022

將目錄標籤放在 VirtualHosts 內部還是外部有區別嗎?我找到了一個配置文件,它有幾個 VirtualHosts,裡面都有相同的 Directory 標籤,外面也一樣;所以我正在考慮擺脫這種重複,但我並不完全理解所涉及的語義。

<VirtualHost> 中的 <Directory> 僅適用於通過該 VHost 訪問該目錄中的文件。<VirtualHost> 之外的 <Directory> 將始終適用(當然,除非在 <VirtualHost> 或其他地方被覆蓋)。

從安全的角度來看,您可以爭論雙方:AllowOverride all在 <VirtualHost> 中配置額外的訪問級別( , f.ex.)可能更明智,因為另一個 VHost 上的腳本之間不可預見的互動可能允許您啟動 XSS攻擊。訪問限制 ( Deny from all, Allow from 127.0.0.1) 在 <VirtualHost> 之外更有意義,以防通過頂級別名或 ScriptAlias 之類的東西存在後門。然後你會遇到真正複雜的可能性:在哪裡可以AllowOverride all提供訪問限制.htaccess,因為可能有一個 VHost,它的腳本引擎由於性能或安全原因而被禁用,但它通常會暴露一個包含敏感資訊的文件受保護.htaccess

歸根結底,<Directory> 的放置位置最終是三件事的組合,按重要性遞增的順序排列:

  1. 政策——如果公司總是將 <Directory> 放在 <VirtualHost> 中,那麼搖擺不定幾乎肯定是不正確的。
  2. 易讀性——如果你有 600 個 VHost,所有這些都需要相同的 <Directory> 節,那麼可能值得打破策略。
  3. 安全性——如果一種方法或另一種方法有明顯的安全優勢,那麼這是事實上正確的選擇,政策和易讀性被詛咒(儘管你最好記錄下你為什麼和如何違反政策,並採取措施,如使用Include,以最大限度地提高可讀性)。

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