Deaktivieren Sie HTTP-Methoden in Apache


11

Wie kann ich bestimmte HTTP-Methoden (z. B. PUT oder TRACE) deaktivieren und Apache eine HTTP-Methode "405-Methode nicht zulässig" senden lassen?

Ich habe die Anweisungen Limit und LimitExcept ausprobiert, aber sie scheinen "403 Forbidden" zu senden.

Ich habe mehrere vhosts - dies sollte sich über alle in der Haupt-httpd.conf befinden.

Antworten:


14

Es scheint wirklich, dass das Definieren des Fehlercodes etwas schwieriger ist, als es sein sollte.

Eine Problemumgehung könnte jedoch die Verwendung von sein mod_rewrite. Das ist mir aus dem Kopf gefallen, weil mod_rewrite bei mindestens 99% der unmöglich aussehenden Apache-Probleme seinen Voodoo-Tanz liefern und Ihr Problem lösen kann.

Wenn alles andere fehlschlägt, versuchen Sie etwas wie

RewriteEngine On
RewriteCond %{REQUEST_METHOD} !^GET [AND]
RewriteCond %{REQUEST_METHOD} !^POST 
RewriteRule .* /yourerrordocuments/405.html [R=405,L] 

Ich weiß, dass das wahrscheinlich nicht die schönste Lösung ist, aber es sollte irgendwie funktionieren ...


1
+1 Mod_rewrite Voodoo löst alle Probleme (für begrenzte Mengen von allen).
Chris S

6
Mod_rewrite führt auch bei jedem URL-Prozess einen langsamen regulären Ausdruck aus, wodurch der Server verlangsamt wird. Mit Vorsicht verwenden.
Marcin

Danke - netter Trick, der den Antwortcode mit R = 405 setzt. Ich hatte gehofft, es gäbe einen besseren Weg, damit OPTIONEN die richtigen Werte melden, aber ich denke, das ist nicht möglich
Greg

Welche Version von Apache / mod_rewrite unterstützt das [AND] -Flag? Ich sehe nur [ODER] (und "und" implizit): httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond
asjo

4

Für die Trace-Methode können Sie dies hinzufügen

TraceEnable off

in Ihrer Hauptkonfigurationsdatei


2

Fügen Sie Folgendes hinzu, um die Rewrite-Engine zu aktivieren:

 RewriteEngine On 

Beachten Sie, dass Rewrite-Konfigurationen standardmäßig nicht von virtuellen Servern vererbt werden. Fügen Sie jedem virtuellen Host RewriteEngine On hinzu.

RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)
RewriteRule .* - [F]
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.