Spam-Blocker im Apache mit SetEnvIfNoCase (Fake:WordPress/2.1-alpha3)
Zur Zeit werde ich hier mal wieder mit nervigen Fake-Trackbacks zugeballert.
Klar, die kann man moderieren, und dann löschen, nervt trotzdem. Was tun? Blocken anhand der IPs ist meist nicht möglich, die wechselt in der Regel ständig. Wenn man die Fakes/den Spam aber zum Beispiel anhand des selben (Fake) User-Agent festmachen kann, ist es recht einfach möglich diese im Apache zu blocken. Natürlich nur, wenn man Zugriff auf die Apache-Conf hat oder zumindest .htaccess Dateien anlegen darf. Wenn nicht -> Provider wechseln ;-) Hier ein aktuelles Beispiel: Fake-Trackbacks mit dem immer gleichen User-Agent "-- WordPress/2.1-alpha3". Prima, damit werden nicht wirklich viele "liebe User" unterwegs sein. Eine entspr. Regel in der Apache-Conf sieht dann wie folgt aus: CODE: SetEnvIfNoCase User-Agent "-- WordPress/2\.1-alpha3" spammer=1 Order allow,deny Deny from env=spammer Allow from all Mit der direktive SetEnvIfNoCase wird der User-Agent mit der RegEx verglichen und im Erfolgsfall die ENV-Variable spammer auf 1 gesetzt. Dann bekommen alle Anfragen die als "spammer" geflagged sind, nur noch ein HTTP 403 Status Code (Forbidden). Man kann solch ein Regelwerk beliebig erweitern und neue Merkmale hinzufügen. Klar kann es sein, das man mit solchen Filter-Regeln auch False-Positives erzeugt, eine Prüfung auf User-Agent Mozilla wäre sicher keine gute Idee ;-) Da man solche Regeln in <Directory>, <Location> und <Files> Blöcken definieren kann, muss man ja auch nicht immer die kompletten Seiten sperren. Das Blog-Verzeichnis oder die URL zum Trackback-Eintrag reicht ja. Falls sich wer hier auf handcode.de zu Unrecht "ausgeschlossen" fühlt, soll sich bitte direkt bei mir melden. Referer oder Referrer?
... oder wenn ein Fehler zum Standard wird.
Wie schreibt sich das denn nun richtig? Referer oder Referrer? Je nach dem wo man nachschaut, bzw. in welchem Kontext es benutztwird, wird es mal so, mal so geschrieben. Die korrekte Schreibweise für das englische Wort ist "Referrer" (engl. to refer, verweisen). Der HTTP-Request-Header schreibt sich aber 'Referer'. GET / HTTP/1.1 Host: www.example.com Referer: http://www.example.org/ Wie kommt's? In den ersten Versionen des RFC 1945 zu 'Hypertext Transfer Protocol -- HTTP/1.0' von 1996 hatte sich versehentlich die falsche Schreibweise 'Referer' eingeschlichen. Im Januar 1997 im RFC 2068 zu 'Hypertext Transfer Protocol -- HTTP/1.1' ist diese, an sich falsche Schreibweise dann endgültig zum Standard für HTTP erhoben worden. 14.37 Referer Leider ist es aber auch mit diesem Standard so wie mit den meisten: Es halten sich nicht alle dran. PHP verwendet die HTTP übliche Schreibweise: $_SERVER["HTTP_REFERER"] In Javascript zum Beispiel wird aber die englische Schreibweise verwendet: document.referrer Warum kann denn nicht mal irgendwas einfach einfach sein...
Autor: Jens Giessmann
in Allerlei, Apache
am
Donnerstag, 29. März 2007
um
23:24
Kommentare (0) | Trackbacks (0) RewriteRules für temporäre Tests
Da ich das selber immer mal wieder brauche, hier mal eine Kurz-Doku dazu:
Aufgabe:
Lösung: RewriteRules mit einer Bedingung auf die Client-IP CODE: RewriteEngine On # Die Baustellen-Seite selber einfach ausliefern RewriteRule ^/baustelle.html - [L] # Alles was NICHT aus dem eigenen Netz (192.0.2.*) kommt.... RewriteCond %{REMOTE_ADDR} !^192\.0\.2\..* # ... umleiten auf die Baustellenseite RewriteRule ^.* http://www.example.org/baustelle.html [L,R]
Autor: Jens Giessmann
in Apache
am
Mittwoch, 28. Februar 2007
um
12:38
Kommentare (0) | Trackbacks (0) Tags für diesen Artikel: apache, programming
« vorherige Seite
(Seite 2 von 2, insgesamt 8 Einträge)
|
blog powered by Serendipity