expertenaustausch > comm.software.* > comm.software.webserver

Boris 'pi' Piwinger (02.12.2010, 12:57)
Servus!

Ich habe im Logfile Aufrufe von piology.org/smiley.txt%xef%xbb%xbf
gefunden. Der Fehler ist offensichtlich. Ich wollte das mit
RedirectMatch abfangen. Irgendwie bin ich aber zu blöd dazu.

Wie geht das?

pi
Boris 'pi' Piwinger (03.12.2010, 01:05)
Boris 'pi' Piwinger wrote:

> Ich habe im Logfile Aufrufe von piology.org/smiley.txt%xef%xbb%xbf
> gefunden. Der Fehler ist offensichtlich. Ich wollte das mit
> RedirectMatch abfangen. Irgendwie bin ich aber zu blöd dazu.
> Wie geht das?


RedirectMatch Permanent ^(.*)[\xA0-\xFF] http://piology.org$1
tut es. Stefan sei dank.

pi
Carsten Wiedmann (03.12.2010, 09:57)
Am 03.12.2010 00:05, schrieb Boris 'pi' Piwinger:
>> Ich habe im Logfile Aufrufe von piology.org/smiley.txt%xef%xbb%xbf
>> gefunden.

> RedirectMatch Permanent ^(.*)[\xA0-\xFF] http://piology.org$1
> tut es.


Auch wenn es für dich tut, bin ich einfach mal neugierig:
Welchen Apache hast du denn (oder findet davor schon irgend ein Rewrite
Processing statt)?

Ein, wget auf "http://localhost/foo.txt%xef%xbb%xbf" landet bei mir
(Apache/2.2.16) unweigerlich in einem "400 Bad Request", so das ein
RedirectMatch gar nicht mehr zum Zuge kommen würde...

BTW: Ist der Referrer von diesem Aufruf eine Seite von dir, oder 'ne
fremde? (Sieht ja grundsätzlich nach'nem encodierten BOM aus (wie auch
immer das an diese Stelle hinkommt), wenn da natürlich auch kein "x"
hingehört beim URL-Encodieren.

Gruß,
Carsten
Boris 'pi' Piwinger (03.12.2010, 17:19)
Carsten Wiedmann wrote:

> Auch wenn es für dich tut, bin ich einfach mal neugierig:
> Welchen Apache hast du denn (oder findet davor schon irgend ein Rewrite
> Processing statt)?


Eigentlich passiert vorher nicht wirklich was, von dem ich wüsste.

Apache/2.1.4 (FreeBSD) mod_ssl/2.1.4 OpenSSL/0.9.7e PHP/5.2.3 with
Suhosin-Patch

> Ein, wget auf "http://localhost/foo.txt%xef%xbb%xbf" landet bei mir
> (Apache/2.2.16) unweigerlich in einem "400 Bad Request", so das ein
> RedirectMatch gar nicht mehr zum Zuge kommen würde...


Hier nicht, sonst hätte ich es wohl nicht im Logfile gehabt;-)

> BTW: Ist der Referrer von diesem Aufruf eine Seite von dir, oder 'ne
> fremde?


Na geh, sowas würde ich doch nie selbst erzeugen;-)

> (Sieht ja grundsätzlich nach'nem encodierten BOM aus (wie auch
> immer das an diese Stelle hinkommt), wenn da natürlich auch kein "x"
> hingehört beim URL-Encodieren.


80.109.62.137 - - [03/Dec/2010:00:02:25 +0100] "GET
/smiley.txt%EF%BB%BF HTTP/1.1" 301 372
"http://www.facebook.com/l.php?u=http%3A%2F%2Fpiology.org%2Fsmiley.txt%25EF %25BB%25BF&h=d0a9a"
"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.15)
Gecko/20101027 SeaMonkey/2.0.10"

66.220.149.246 - - [03/Dec/2010:16:12:38 +0100] "GET
/smiley.txt\xef\xbb\xbf HTTP/1.1" 301 378 "-" "facebookexternalhit/1.1
(+http://www.facebook.com/externalhit_uatext.php)"

pi
Carsten Wiedmann (03.12.2010, 23:25)
Am 03.12.2010 16:19, schrieb Boris 'pi' Piwinger:
> Hier nicht, sonst hätte ich es wohl nicht im Logfile gehabt;-)
> /smiley.txt%EF%BB%BF HTTP/1.1" 301 372 "http://www.facebook.com/l.php?u=http%3A%2F%2Fpiology.org%2Fsmiley.txt%25EF %25BB%25BF&h=d0a9a"
> "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.15)
> Gecko/20101027 SeaMonkey/2.0.10"
> 66.220.149.246 - - [03/Dec/2010:16:12:38 +0100] "GET
> /smiley.txt\xef\xbb\xbf HTTP/1.1" 301 378 "-" "facebookexternalhit/1.1
> (+http://www.facebook.com/externalhit_uatext.php)"


Ok, der Zugriff ist ja tatsächlich auch auf:
"foo.txt\xef\xbb\xbf" bzw. "foo.txt%ef%bb%bf" und nicht
"foo.txt%xef%xbb%xbf", da kommt natürlich kein "Bad Request".

> Na geh, sowas würde ich doch nie selbst erzeugen;-)


Na hoffentlich ;-)

>>> RedirectMatch Permanent ^(.*)[\xA0-\xFF] http://piology.org$1
>>> tut es.


Da beim Redirector von Facebook ja immer 2 Requests kommen, erzeugst du
so letztendlich 6 Redirects (8 Requests) bei dir (wobei das dann so auch
nur unter *nix tun würde), würde ich also so machen:
| RedirectMatch permanent (.*?)[\xA0-\xFF]+$ $1

Wären dann aber immer noch 4 Requests anstatt 2. Warum nicht einfach die
Datei unter dieser URI ausliefern?:
| RewriteEngine On
| RewriteRule (.*?)[\xA0-\xFF]+$ $1

Gruß
Carsten
Boris 'pi' Piwinger (06.12.2010, 13:36)
Carsten Wiedmann wrote:

> >>> RedirectMatch Permanent ^(.*)[\xA0-\xFF] http://piology.org$1
> >>> tut es.

> Da beim Redirector von Facebook ja immer 2 Requests kommen,


Wieso? Sonst habe ich mir den noch nie angesehen.

> erzeugst du
> so letztendlich 6 Redirects (8 Requests) bei dir (wobei das dann so auch
> nur unter *nix tun würde), würde ich also so machen:
> | RedirectMatch permanent (.*?)[\xA0-\xFF]+$ $1


Guter Punkt. Ich war mir gar nicht bewusst, dass das auch geht (kannte
ich nur bei Perl). Danke.

> Wären dann aber immer noch 4 Requests anstatt 2. Warum nicht einfach die
> Datei unter dieser URI ausliefern?:
> | RewriteEngine On
> | RewriteRule (.*?)[\xA0-\xFF]+$ $1


Ich mag falsche Anfrage mit 301 beantworten. Für die aussterbende
Spezies, die Links überprüfen;-)

pi
Carsten Wiedmann (06.12.2010, 17:05)
Am 06.12.2010 12:36, schrieb Boris 'pi' Piwinger:
> Carsten Wiedmann wrote:
>> >>> RedirectMatch Permanent ^(.*)[\xA0-\xFF] http://piology.org$1
>> >>> tut es.

>> Da beim Redirector von Facebook ja immer 2 Requests kommen,

> Wieso? Sonst habe ich mir den noch nie angesehen.


Da frägst du mich zuviel. Ist mir auch nur bei meinen Tests aufgefallen.

Wenn man in Facebook auf einen Link von einem externen Inhalt klickt
kommt man erst mal zu einer Seite wo man bestätigen muss, dass man nach
extern will (und man sieht die URI wo es hingeht). z.B.:


Wenn man da dann auf "Ja" klick wird der Browser eben auf z.B. deine
Seite "http://piology.org/foo.txt" umgeleitet (was 1 Request wäre), mit
dem Referrer von der Facebook Redirector Page (und dem UserAgent vom
Browser des Users).

Mit dem Aufruf (oder klick auf Ja?) der Redirector Seite bekommt auch
der Bot von Facebook einen Auftrag, (aktuelle) Infos über das Ziel des
Links einzuholen. Was den der 2. Request auf
"http://piology.org/foo.txt" wäre. Ohne Referrer und
"facebookexternalhit" im UserAgent String.

>> | RedirectMatch permanent (.*?)[\xA0-\xFF]+$ $1

> Guter Punkt. Ich war mir gar nicht bewusst, dass das auch geht (kannte
> ich nur bei Perl). Danke.


Alle Directiven mit *Match (bzw. ~) oder mod_rewrite benutzen die PCRE
Lib. Ist also ganz normales Perl kompatibles Regex.

> Ich mag falsche Anfrage mit 301 beantworten. Für die aussterbende
> Spezies, die Links überprüfen;-)


Den Facebook Bot interessiert es jedenfalls nicht (und korrigiert den
Link wohl auch nicht im System). Für den der dann im Browser einen
Bookmark drauf macht, macht der 301 dann tatsächlich einen Sinn.

Gruß
Carsten
Ähnliche Themen