Apache-Fehler: Dateiname zu lang: GET kann nicht zugeordnet werden

8

Wir haben kürzlich einen neuen Fehler in unseren Apache-Logs entdeckt:

%Vor%

Es sieht so aus, als ob JavaScript von einer Seite in einer Anfrage an den Server gesendet wird. Es ist jedoch unklar, wie dies geschehen würde. Von der Suche im Internet sieht das mit bestimmten Wordpress-Plugins aus, aber da gibt es nicht viel andere Informationen.

Hinweis zur Umgebung: Clients verwenden IE8 auf einem Citrix Thin Client in Großbritannien. Die Webserver sind 1700 km entfernt, also gibt es ein bisschen Latenz. Die Website verwendet stark AJAX und große Cookies.

Könnte jemand dazu raten, dieses Problem zu debuggen?

Danke

Andrew

    
Mr Gravity 17.03.2011, 10:38
quelle

2 Antworten

6

Ich bekomme das auch, mit einem PHP-Framework, das URLs erlaubt, die so formatiert sind, dass

%Vor%

kann als

umgeschrieben werden %Vor%

zusammen mit einer Regex im Framework-Code.

Der Fehler sieht wie folgt aus (/ var / log / apache / error_log):

%Vor%

- & gt; In diesem Fall analysiert Apache den Dateinamen als

%Vor%

(Ich serialisiere einen Objektstatus und überlasse ihn).

Ich muss das (zumindest die URLs mit langen angehängten serialisierten Objekten) in den gebräuchlicheren Stil umschreiben:

%Vor%

- & gt; In diesem Fall analysiert Apache den Dateinamen als index.php

Kurz gesagt, schreiben Sie Ihre URLs so schnell wie möglich neu und fügen Sie ? ein, um Daten als CGI-style-Parameter anstelle von Pfadelementen zu übergeben.

Ich ran strace -p $PID & für jede Apache-Prozess-ID (wie von pidof apache2 gemeldet):

%Vor%

zum Beenden:

%Vor%

Und sehen Sie die Kernel-Aufrufe make von apache2:

%Vor%

Da diese Systemaufrufe keine Fehler zurückgeben (z. B. '... = -1'), habe ich die Apache2-Quellen heruntergeladen und gefunden:

Grep für "Kann nicht zuordnen":

server/core.c

%Vor%

suche nach apr_filepath_merge ...

srclib/apr/file_io/unix/filepath.c

%Vor%

finde APR_PATH_MAX ...

Netware

%Vor%

WIN32

%Vor%

./ srclib / apr / include / apr.h.in

%Vor%

/usr/src/linux-headers-2.6.35-28/include/linux/limits.h

%Vor%     
jmullee 11.05.2011 15:19
quelle
0

Eine weitere verwandte Sache, auf die ich stieß, war PHP 5.2 SUHOSIN Sicherheitspatchset, was (unter anderem) die Länge des get-Parameters begrenzt (standardmäßig auf 512):

Ссылка

    
jmullee 12.05.2011 13:59
quelle

Tags und Links