Posts Tagged ‘mod_rewrite’

Montag, 19. Juni 2023

Apaches gehärtetes mod_rewrite strauchelt über Leerzeichen (%20)

Seit einem kürzlichen Update Apaches findet sich in den Apache Error Logs vieler Web-Applikationen folgende Fehlermeldung:

[Sat Jun 17 20:23:52.123046 2023] [rewrite:error] [pid 553164] [client 1.2.3.4:49928] AH10411: Rewritten query string contains control characters or spaces

Scripts funktionieren nicht mehr, und Browser zeigen Fehlermeldungen an, wenn man bestimmte URLs aufruft.

Des Rätsels Lösung: Ist mod_rewrite aktiviert, und enthält die umzuschreibende URL ein HTML-enkodiertes Leerzeichen (%20), erachtet das „gehärtete“ Apache dies als Sicherheitsrisiko und blockiert den Request.

Der Workaround: Das mod_rewrite-Flag [B] (Dokumentation) muss in die .htaccess gepfriemelt werden, wie in AH10411 error: Managing spaces and %20 in apache mod_rewrite empfohlen:

RewriteRule ^ajax/(.*) /ajax.php?q=$1 [B]

Als Person, die in der Informationssicherheit arbeitet, bin ich mir aber nicht ganz sicher, ob die Apache-Jungs diese „Sicherheitsverbesserung“ wirklich bis zum Ende durchdacht haben. Ich habe das Gefühl, dass man mit diesem Flag viele Installationen unsicherer macht …

Tags: , , , , , ,
Labels: IT, Linux

Keine Kommentare | neuen Kommentar verfassen

Montag, 7. Oktober 2013

Apache liefert ungefähr richtige Dateinamen aus

Ungefähr einmal im Jahr konfiguriere ich unter einer Mac OS X-Installation den lokalen Web-Server, um auf dem Gerät Web-Applikationen zu entwickeln. Und bei jedem Mal vergesse ich in der Regel, dass unter Mac OS X das Apache-Modul mod_negotiation installiert ist, welches spätestens bei der Verwendung von mod_rewrite zu komischem Verhalten führt.

Beispiel: Ich rufe im Browser die URL http://localhost/article/132 auf, welche eigentlich mittels mod_rewrite auf index.php umgeleitet werden sollte. Habe ich im DocumentRoot des Web-Servers aber dummerweise ein Script namens article.php rumliegen, wird Apache die Rewrite-Regeln nicht beachten und stattdessen article.php aufrufen.

Unter Mac OS X könnte man nun rabiaterweise einfach das Laden von mod_negotiation verhindern. Leider führt das zu neuen Problemen und Fehlermeldungen, welche ich hier aus Zeitgründen nicht ausführen möchte, weshalb man stattdessen die mod_negotiation-Funktionalität in der VirtualHost-Konfiguration für das DocumentRoot und alle darunterliegenden Verzeichnisse deaktiviert:

...
Options -Multiviews
...

Und gut is …

Tags: , , , ,
Labels: Web

Keine Kommentare | neuen Kommentar verfassen