Sonstiges

.htaccess REGEX Frage

momentan habe ich diese Anweisung in der.htaccess, umRefererspam zu bekämpfen:

SetEnvIfNoCase Referer „.*(adult|al4a|dalin|amateurmatch| …etcpp…).*“ BadReferrer
# Exclude my domain form the above
SetEnvIfNoCase Referer „.*(basicthinking).*“ !BadReferrer
order deny,allow
deny from env=BadReferrer

Frage: Was muss ich tun, wenn ich das Ganze so abändern will, daß egal an welcher Stelle ein böser Begriff in der Domain vorkommt, der Referer abgeblockt wird?

Bisher werden ja nur Zugriffe geblockt, die von *.[Böse Domainname].* (zB www.adult.com) kommen. Ich möchte aber auch bspw. blocken: adult.[domain].com, [string]adult[string].[domain].*, *.[string]adult[string].* …


Neue Stellenangebote

Growth Marketing Manager:in – Social Media
GOhiring GmbH in Homeoffice
Content Marketing Expert / Social Media Expert Publications (w|m|d)
zeb.rolfes.schierenbeck.associates gmbh in Münster
Senior Communication Manager – Social Media (f/m/d)
E.ON Energy Markets GmbH in Essen

Alle Stellenanzeigen


Über den Autor

Robert Basic

Robert Basic ist Namensgeber und Gründer von BASIC thinking und hat die Seite 2009 abgegeben. Von 2004 bis 2009 hat er über 12.000 Artikel hier veröffentlicht.

4 Kommentare

  • Vielleicht hilft das?

    SetEnvIfNoCase Referer „€œ(adult|al4a|dalin|amateurmatch| „€¦etcpp“€¦).*.*“€? BadReferrer
    SetEnvIfNoCase Referer „€œ(adult|al4a|dalin|amateurmatch| „€¦etcpp“€¦).(adult|al4a|dalin|amateurmatch| „€¦etcpp“€¦).*“€? BadReferrer
    SetEnvIfNoCase Referer „€œ.*(adult|al4a|dalin|amateurmatch| „€¦etcpp“€¦).(adult|al4a|dalin|amateurmatch| „€¦etcpp“€¦).*“€? BadReferrer

    Einerseits nimmst Du alle Subdomains wie adult.myhost.com beim ersten Fall raus, andererseits alles was adult.adult.com heißt, und im dritten Fall ist alles was http://www.adult.adult.com lautet weg…? Sieht aber bei einer langen Filterliste eher mager aus.

    Kannst Du nicht ein Redirekt auf z.B. eine eigene filter.php legen, sobald irgendwer nur ein Spam-Wort in dem Referer hat? Und in filter.php überprüfst Du den Referer mit preg_match_all()…

  • herzlichen Dank soweit. Würde zb nicht auch eine Anweisung wie folgt ausreichen:

    SetEnvIfNoCase Referer “ *(BöserBegriff1 | BöserBegriff2 |…)* “

    ausreichen? Egal ob nun der Begriff bei der Subdomain oder Hauptdomain vorkommt?

  • ich glaube, dass mod_rewrite dir auch gut weiterhelfen könnte. da gibt es zudem eine möglichkeit eine map einzubinden, in der du dann z.b. alle spammigen begriffe listen könntest. ist übersichtlicher, und man kann sogar, wenn die liste gross oder die last auf dem server zu einem problem werden sollte, auf eine art binäres datenbank format wechseln. und für ganz wilde sache kannste an php noch ne variable durchs environment durchreichen, dann kannst du auf der ebene auch noch aktiv werden.

  • @Robert – Das Problem dabei ist, dass jemand ja grade über SEX bericht, und das in dem Permalink irgendwo einmal auftaucht. So bannst Du auch jemanden mit blog.tralalala-server.de/2005/01/01/bericht-ueber-sex-konsum/ – einen Punkt musste schon einfügen in der .htaccess Anweisung 😉