Was macht die Apache Satisfy-Direktive?

9

Ich bin auf eine httpd.confRichtlinie gestoßen , die ich nicht verstehen kann:

<Files ~ "^\.ht">
  Order allow,deny
  Deny from all
  Satisfy All
</Files>

Laut dem Dokument würde ich sagen, dass Satisfydies keine Auswirkungen hat, da es keine gibt Allow. Liege ich falsch? Was macht diese Richtlinie Ihrer Meinung nach?

user41565
quelle
Das habe ich mich auch gefragt. Diese Anweisungen sind in der Standard-httpd.conf unter FreeBSD 7.x enthalten.
Stefan Lasiewski

Antworten:

0

Ich würde Ihnen zustimmen, die Befriedigung, dass alles nichts tut - ohne sie würden diese Dateien immer noch abgelehnt.

AliGibbs
quelle
2
Ja - Da es keine Allow fromoder RequireBedingungen gibt, Satisfyspielt dies hier keine Rolle (Sie können eine Bedingung, die nicht existiert, nicht erfüllen, daher wird der Zugriff verweigert).
voretaq7
3

TLDR;
In den meisten Fällen ist diese Linie nicht unbedingt erforderlich, da Satisfy Allist in der Regel die Einstellung Standardserver. In diesem Fall ist die Leitung nicht unbedingt erforderlich.

Die Zeile wird als zusätzliche Sicherheit hinzugefügt. "Nur für den Fall" Der Server wurde so konfiguriert, dass Satisfy Anydie Standardeinstellung verwendet wird.
Wenn der Server absichtlich mit dieser Satisfy AnyEinstellung festgelegt wurde, möchten Sie diese Einstellung auf jeden Fall überschreiben, indem Sie die Satisfy AllAnweisung zum Sichern von Dateien wie z .htaccess.

Ich bin nicht sicher, ob die htaccess-Datei die Standardanweisung "Satisfy" des Servers für alle Ordner in oder unter einer der genannten htaccess-Dateien überschreiben würde.

Für generischen Code, der im Internet veröffentlicht wird, insbesondere wenn Sie erfahren, wie .htaccessDateien ordnungsgemäß gesichert werden, ist das Poster dafür verantwortlich, dass keine Annahmen über Ihre Servereinstellungen getroffen werden, die die Sicherheit des Dokuments beeinträchtigen könnten. Durch das Einfügen dieser "zusätzlichen" Zeile wird sichergestellt, dass die sicherere Einstellung auf Ihre htacess-Dateien angewendet wird. Durch Hinzufügen der Direktive funktioniert der Codeblock 100% der Zeit, anstatt es dem Zufall zu überlassen, dass htaccess-Dateien für die kleine Gruppe von Servern verfügbar gemacht werden, die unterschiedlich konfiguriert sind.

Gemäß der Apache-Dokumentation :

Satisfy Any|All::

Sowohl hostbasierte Zugriffsbeschränkungen als auch kennwortbasierte Authentifizierung können gleichzeitig implementiert werden. In diesem Fall wird die Satisfy-Direktive verwendet, um zu bestimmen, wie die beiden Einschränkungen interagieren.

... verwendet in <Directory>, <Files>und <Location>Abschnitte sowie.htaccess

Diese Anweisung ist nur nützlich, wenn der Zugriff auf einen bestimmten Bereich sowohl durch den Benutzernamen / das Kennwort als auch durch die Client-Host-Adresse eingeschränkt wird. In diesem Fall besteht das Standardverhalten (Alle) darin, dass der Client die Adresszugriffsbeschränkung besteht und einen gültigen Benutzernamen und ein gültiges Kennwort eingibt. Mit der Option Beliebig erhält der Client Zugriff, wenn er entweder die Host-Einschränkung erfüllt oder einen gültigen Benutzernamen und ein gültiges Kennwort eingibt.

Da der Standardwert normalerweise ist Satisfy All(die einzige andere Option ist Satisfy Any), bemerken Sie möglicherweise keinen Unterschied, wenn Sie diese Anweisung einfügen. Ihre Serverkonfigurationsdatei (oder? Möglicherweise eine .htaccess-Datei in einem übergeordneten Verzeichnis? - Ich bin nicht sicher, ob dies möglich ist oder nicht) überschreibt jedoch möglicherweise den Serverstandard. In beiden Satisfy AllFällen stellt das konsistente Hinzufügen der Richtlinie sicher, dass die richtige Sicherheitsmaßnahme angewendet wird.

Durch das Satisfy AllEinfügen der Direktive stellen Sie die höhere Sicherheitseinstellung für diese Dateien sicher, unabhängig von der Einstellung in Ihrer Serverkonfiguration.

Das mit dem Dokument verknüpfte Dokument erwähnt einige Anwendungsfälle, bei denen Sie möglicherweise stattdessen verwenden möchten Satisfy Any.

SherylHohman
quelle
1

Da ich keinen Kommentar abgeben kann, füge ich hier hinzu, dass die Antwort von @ SherylHohman die beste Antwort ist, da sie für zusätzliche Sicherheit wichtig ist . Es ist also technisch nicht richtig zu sagen, dass es ohne es keine Wirkung hat (im Gegensatz zur akzeptierten Antwort), da Sie immer noch den Rest der Serverkonfiguration berücksichtigen müssen. Ich möchte jedoch die Antwort von @ SherylHohman ergänzen:

  1. Die Serverkonfigurationsdatei (z. B. /etc/httpd/conf/httpd.conf) könnte eine allgemeinere Satisfy AnyAnweisung enthalten. Dies ist beispielsweise wichtig, da möglicherweise jemand einen Benutzernamen / ein Kennwort benötigt, um auf alle Sites auf seinem Server zuzugreifen (z. B. über Require group [name) und dann eine Umgehung von einer bestimmten IP-Adresse oder einer Reihe von IP-Adressen über zulässt. Allow from [ip]Wenn dies also weggelassen wurde, .htaccesswürde geöffnet werden, weil ein Satisfy Anydeklariert werden müsste.

  2. Die Verzeichnisse in oder über einer bestimmten .htaccessDatei haben keine Auswirkungen, es sei denn, sie enthalten einen <Files>Abschnitt, der ebenfalls speziell übereinstimmt .htaccessund diese Regel überschreibt, zusammen mit der Serverkonfiguration, die auch die erforderlichen AllowOverrideAnweisungen enthält (z . B. Limitoder All). Ich sage, dass es sein muss, <File>weil dies in der Serverkonfiguration verwendet wird und diese nach dem <Directory>Level (dh dem Root-Level .htaccess) verarbeitet werden. Dies liegt daran, dass <File>Abschnitte später zusammengeführt werden und es scheint, dass sie .htaccessnatürlich nach der Serverkonfiguration verarbeitet werden.

chunk_split
quelle
Vielen Dank für die Einreichung der Lücken. Mir war unklar, wie / wann diese Richtlinie veröffentlicht wurde. Vielen Dank auch für die Bestätigung, dass es IMMER für Dateien hinzugefügt werden sollte, die höchste Sicherheitsmaßnahmen erfordern.
SherylHohman
Gern geschehen @SherylHohman, da ich mich entschlossen habe, dies an diesem Tag zu posten, nachdem ich auf die harte Tour gelernt hatte! Ich entschied, dass es wichtig sein würde, genau zu erfahren, warum dies ein Problem für mich war.
chunk_split