Blog Jvanderlinde.net
Insights & meer

Webspam tegengaan.

De laatste 3 maanden stijgt het aantal spam berichten explosief toe. Het zijn voornamelijk bots die contact formulieren op websites afstruinen en deze 'automatisch' invullen waardoor de ontvanger spam te lezen krijgt. Het varieert van voornamelijk SEO gerelateerde berichten zoals "I have seen your website and blabla" of de bekende "Randy" die een zoekmachine audit wil doen. Het is storend en super vervelend dat het blokkeren van IP adressen vaak al niet meer helpt. Het verwerken van een captcha is niet altijd even wenselijk dus moest ik met iets opkomen wat eenvoudig toe te passen is en geen resources kost of irritaties van gebruikers (bezoekers) oplevert.

 

Op de meeste websites die ik maak bouw ik een standaard, off the shelf contact formulier in. Het is niet zo belangrijk omdat het meeste contact via telefoon vaak verloopt als je het over een escort service hebt. In een boekingsformulier gebruik ik het al jaren, omdat dat de berichten zijn die men lezen wilt. We zien een explosieve stijging in webspam de laatste tijd en dit treft zo'n beetje al m'n klanten gezien ik vaak gebruik maak vanhetzelfde contact formulier. Welnu. Hoe trigger je een antispam dat controleert wanneer iemand een spam bericht invult of niet? Het antwoord is vrij simpel. Met een verborgen formulier, dat mensen niet kunnen zien.

 

Een verborgen formulier is eigenlijk een veldje dat niet zichtbaar is voor jou en mij, maar wel voor de zoekmachine, bots en andere troep. In dit geval kan je een veldje op een formulier maken dat je de naam "gebruikersnaam" kunt geven ter voorbeeld en middels een PHP script inhaakt op wanneer deze ingevuld is, dit niet te verwerken. Het blokkeert de bots van het posten van berichten niet, maar het staakt wel dat het spam bericht doorzet naar de eindgebruiker. Het meesturen van het IP adres naar de eindgebruiker kan ook zinvol zijn, omdat deze globaal in de firewall verwerkt kan worden. Webspam is gewoon irritant en als je een contact formulier hebt die bestookt wordt is het tijd om er iets aan te gaan doen. De truuc is niet eens zo moeilijk, ik zal je een klein voorbeeld geven:

 

<?PHP $spam = $_POST['gebruikersnaam']; // if($spam) { die("Webspam detected."); } else { // Process the form like normal } <!-- hier je contact form script --> ... ?>
 

Direct na <form> class:
 
     <div class="form">
      <label for="gebruikersnaam">Gebruikersnaam</label>
      <input type="text" name="gebruikersnaam">
    </div>
 

En in je CSS: .form{display:none;} - door het de waarde display:none; te geven is het formulier met 'gebruikersnaam' helemaal niet zichtbaar op je contact formulier. Echter bots kijken hier compleet niet naar, en zullen het veldje $random invullen waardoor juist de trigger $spam aangewakkerd wordt. Er wordt een melding weergeven met Webspam detected en het script stopt op dat moment met werken. Het is erg effectief omdat 99.9% van de spammers geautomatiseerde tools gebruiken om opzoek te gaan naar contactformulieren. Probeer het zelf ook; door het bovenstaande stukje script pal voor het verwerken van het contact formulier te plaatsen, je contactformulier een input type mee te geven en de CSS .form{display:none;} nog even achterwege te laten.

 

Als je het veldje "gebruikersnaam" invult zou je script succesvol moeten triggeren met "Webspam detected". Het resultaat is dat het formulier niet verwerkt wordt en je de spam ook niet meer zult krijgen. Vul je het veldje username niet in, maar wel de rest wat behoort tot je contact formulier, werkt het wel. Door de klasse display:none; mee te geven verberg je het veldje voor gewone bezoekers. Voor een spammer en z'n automatische tools kan deze het onderscheid niet maken en vult het domweg gewoon in. Natuurlijk is Captcha het allerbeste; maar het kan ook leiden tot irritaties van de gebruikers. Persoonlijk ben ik voor een vrij internet zonder captcha's en andere rekenformule's die de bezoeker maar op moet lossen. Dit kan spam met 99% terugdringen.

 

Echter is het aan te raden om het IP adres van een potentieele spammer mee te sturen in een log of email. Dit kan helpen in het compleet verbannen van IP adressen die echt overlast veroorzaken. Denk aan een (mail functie met daarin het IP adres van de spammer, dat je verstuurd middels '.$_SERVER['REMOTE_ADDR'].' - de IP adressen kunnen in een firewall worden gezet, want het gaat de website wel traffic kosten en een onevenredig aantal van bezoekers. Bots wil je niet meetellen in je unieke bezoeken, omdat dit een vertekend beeld geeft ten opzichte van wat er werkelijk aan unieke bezoekers op je website zit.