Sådan reducerer du nemt spam med .htaccess
Hvis du har en blog eller bare en kontaktformular bliver du sikkert som amen i kirken bombarderet med spam. Her får du et godt tip til hvordan du nemt reducerer spam med .htaccess
Pupulære CMS’er som f.eks. WordPress har et avanceret spamfilter, som tager det meste spam, så hvorfor overhovedet filtrere yderligere? En spamkommentar på en blog eller spam i en kontaktformular giver ud over manuelt arbejde også et unødvendigt ressourcetab på serveren.
En almindelig sidevisning kan normalt caches og koster næsten ingen ressourcer, men når man skriver en kommentar på f.eks. en WordPress blog bliver både PHP og MySQL sat på arbejde, og derfor er det en relativ tung process i forhold til bare at vise en side. Normalt er det ikke noget problem, og selv et webhotel til 9 kr per måned vil sagtens kunne håndtere det pres, der kommer fra spambots.
Der kan dog være tilfælde, hvor man bliver bombarderet af en spambot, og her er der et billigt trick til at frasortere de dumme spambots. Det går i alt sin enkelthed på at tjekke om sidekaldet har en referer fra det pågældende site. Hvis en bruger f.eks. går ind på mitsite.dk og klikker videre til mitsite.dk/kontaktformular vil siden referer være mitsite.dk.
For en dårlig programmeret spambot vil refereren typisk være tom. Derfor kan vi lave en grovsortering i Apache’s .htaccess fil, hvor vi blokkerer alle requests hvor mitsite.dk (og det er så her du indsætter dit eget domæne) ikke indgår i refereren. Nedenstående eksempel er lavet til WordPress men kan bruges til alle systemer ved at udskifte “wp-comments-post”.
# DENY ACCESS TO NO-REFERRER REQUESTS
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post. [NC]
RewriteCond %{HTTP_REFERER} !.*mitsite. [OR,NC]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) - [F,L]
Når en request bliver blokkeret med ovenstående filter, bliver hverken PHP eller MySQL sat i sving. Der skal et pænt stort spam angreb til for, at man for alvor kan mærke det på serverens performance, men det tager kun 2 minutter at implementere ovenstående. Derfor kan man lige så godt gøre det en del af sin standardinstallation.