Begrenzen Sie Apache2.4-Anforderungsheader

Begrenzen Sie Apache2.4-Anforderungsheader

Ich versuche, die Anforderungsheader eines virtuellen Hosts auf nur POST, HEADund zu beschränken GET. Bisher habe ich Folgendes getan: Ich habe ein .htaccessfür meinen virtuellen Host erstellt und Folgendes eingegeben:

<LimitExcept GET HEAD POST>
    Require valid-user
</LimitExcept>

Das Problem ist, dass <LimitExcept>ein Fehler angezeigt wird not allowed here, der besagt, dass , also habe ich versucht, zu verwenden, <Limit>aber es führt zum gleichen Fehler. Ich habe auch versucht, sie in meine virtuelle Hostdatei zu verschieben, .confund es tritt immer noch ein Fehler auf. Was ich nicht verstehe, ist, dass in den offiziellen Dokumenten steht, dass es dort zulässig ist, auf meinem Server ist es jedoch nicht zulässig.

Antwort1

Wenn Sie versuchen, nur die Methoden GET, POST und HEAD zuzulassen, sollte dies problemlos funktionieren:

<Directory "/path/to/documentroot">
    Require method GET POST HEAD
</Directory>

Sie müssen diese Konfiguration in Ihren VirtualHost einfügen.

BEARBEITEN: Und um Ihre andere Frage im Kommentar zu beantworten (wie man die Kennwortauthentifizierung nur für POST-Anfragen aktiviert), kann dies mit den folgenden Anweisungen erreicht werden (die Sie in /Pfad/zu/Ihrem/Verzeichnis/.htaccess einfügen können):

<RequireAny>
     AuthUserFile /path/to/your/.htpasswd
     AuthName "Login"
     AuthType Basic
     Require method GET HEAD
     Require valid-user
</RequireAny>

Dadurch werden GET- und HEAD-Methoden zugelassen, POST-Anfragen lösen jedoch eine Authentifizierung aus.

Antwort2

2.4 hat hierfür ein spezielles Modul namens mod_allowmethods, und die Verwendung von Limit/LimitExcept wird in 2.4 nicht empfohlen. Stellen Sie sicher, dass Sie das Modul laden und fügen Sie im entsprechenden virtuellen Host Folgendes hinzu:

# documentroot dir in virtualhost
<Directory /path/to/dir>
     AllowMethods GET HEAD POST
     Require valid-user
</Directory>

Sie können es auch global machen, indem Sie es früher in der Serverkonfiguration für alles definieren, wie ich es unten beschreibe.

***Beachten Sie, dass dies / in Ihrem Dateisystem ist, Sie sollten also hier den Zugriff verweigern und ihn anschließend in bestimmten Verzeichnissen wie Documentroot oder Aliasverzeichnissen zulassen, Allowmethods jedoch weiter nach unten weitergeben, sofern Sie sie nicht später überschreiben.

<Directory />
    Require all denied
    AllowMethods GET HEAD POST
</Directory>

verwandte Informationen