Ein <Verzeichnis> in einem <VirtualHost> gilt nur für Dateien in diesem Verzeichnis, wenn über diesen VHost auf sie zugegriffen wird. <Verzeichnis> außerhalb eines <VirtualHost> gilt immer (sofern es nicht im <VirtualHost> oder anderswo überschrieben wird).
Unter Sicherheitsgesichtspunkten können Sie beide Seiten argumentieren: Zusätzliche Zugriffsebenen (z AllowOverride all
. B.) sind wahrscheinlich klüger in einem <VirtualHost> zu konfigurieren, da Sie durch eine unvorhergesehene Interaktion zwischen den Skripten auf einem anderen VHost möglicherweise ein XSS starten können Attacke. Zugriffsbeschränkungen ( Deny from all
, Allow from 127.0.0.1
) sind außerhalb eines <VirtualHost> sinnvoller, falls eine Hintertür über einen Alias oder ScriptAlias der obersten Ebene vorhanden ist. Und dann kommen Sie zu den wirklich komplizierten Möglichkeiten: Woher kommt eine AllowOverride all
, die eine Zugriffsbeschränkung im .htaccess
Handumdrehen aktiviert, da möglicherweise ein VHost vorhanden ist, dessen Skript-Engine aus Leistungs- oder Sicherheitsgründen deaktiviert ist, der dann jedoch normalerweise eine Datei mit vertraulichen Informationen verfügbar macht geschützt durch .htaccess
?
Am Ende des Tages ist das Platzieren des <Verzeichnisses> eine Kombination aus drei Dingen in aufsteigender Reihenfolge der Wichtigkeit:
- Richtlinie: Wenn das Unternehmen <Verzeichnis> immer in <VirtualHost> einfügt, ist es mit ziemlicher Sicherheit falsch, das Boot zu rocken.
- Lesbarkeit - Wenn Sie sechshundert VHosts haben, die alle dieselbe Zeilengruppe <Directory> benötigen, lohnt es sich wahrscheinlich, gegen die Richtlinien zu verstoßen.
- Sicherheit - Wenn der eine oder andere Ansatz einen eindeutigen Sicherheitsvorteil bietet, ist dies de facto die richtige Wahl, Politik und Lesbarkeit (obwohl Sie gut beraten wären, zu dokumentieren, warum und wie Sie gegen die Richtlinien verstoßen haben und zu Maßnahmen ergreifen,
Include
um die Lesbarkeit zu maximieren.