Weg met Spam

De zoektocht naar een goed CAPTCHA alternatief

18 jul 2012
.
Door: Karin Nieuwenhof
No votes yet.
Please wait...

6
(0)

Je hebt het vast weleens gezien: een vreemde code onderaan een formulier die correct overgetypt dient te worden om te bewijzen dat je geen ‘robot’ bent. Deze maatregel om spam tegen te gaan wordt ook wel een CAPTCHA genoemd, wat staat voor “Completely automated public Turingtest to tell computers and humans apart”.

 

Er zijn helaas diverse nadelen aan het gebruiken van deze methode. Spambots worden steeds behendiger in het uitlezen van afbeeldingen, waardoor veel ingewikkelde CAPTCHA’s al eenvoudig gekraakt kunnen worden. (Zie: PWNtcha). De afbeeldingen die niet of nauwelijks gekraakt kunnen worden zijn vaak zo ingewikkeld dat het zelfs voor mensen lastig is om de juiste code eruit te halen. Dit laatste komt de gebruiksvriendelijkheid natuurlijk niet ten goede. Een moeilijke CAPTCHA kan ervoor zorgen dat formulieren niet ingevuld worden, met als gevolg een lagere conversie.

Alternatieven

Door de nadelen van een CAPTCHA zijn veel web ontwikkelaars op zoek naar een goed alternatief. Hieronder volgen enkele mogelijkheden, met ieder zijn voor- en nadelen.

Honeypot

Bij een CAPTCHA moet een mens bewijzen dat hij of zij geen robot is, bij de zogenaamde Honeypot methode is dit precies andersom. Een Honeypot staat in de internetwereld bekend als een opzettelijk lek in een systeem om hackers in de val te lokken en zo achter hun gegevens te komen. Bij formulieren werkt het als volgt: er is een extra veld in het formulier die verborgen wordt doormiddel van CSS (of javascript), zodat de gebruiker dit veld niet ziet. Een robot ziet dit veld wel en vult vaak alle velden in. Zodra dit veld wordt ingevuld is bekend dat je met een spam bot te maken hebt. Is het veld leeg dan kan het formulier verzonden worden.
Het nadeel is dat zogenaamde “screenreaders” ook geen CSS tonen en de gebruiker dan wel het veld wat leeg moet blijven krijgt te zien. Daarnaast wordt vaak aangeraden om dit veld een naam als “Name” of “Email” te geven, zodat de robot het zeker in gaat vullen. Veel browsers komen echter tegenwoordig met een functie waarbij ze automatisch formulier-gegevens invullen en dus ook deze velden. Al met al een slimme en goedwerkende methode, maar het heeft zo zijn nadelen.

Tijdcontrole

Robots vullen een formulier vaak zo snel in met nepgegevens dat het “onmenselijk” is. Als een contactformulier binnen 5 seconden ingevuld en verzonden wordt weet je dat je met spam te maken hebt. Middels bijvoorbeeld PHP-sessies kun je hier een controle op uitvoeren om spam tegen te gaan. Het nadeel is dat robots steeds slimmer worden en soms even wachten met het verzenden van het formulier. De tijdgrens zal dus zorgvuldig bepaald moeten worden.

Het is aan te raden om een melding weer te geven als het formulier te snel verzonden wordt, zodat een gebruiker die toevallig erg snel is weet waarom het formulier niet verzonden wordt en nog een kans krijgt. Gebruik voor de tijdscontrole geen Javascript, dit is vaak uitgeschakeld bij spambots om zaken als Javascript/jQuery validatie tegen te gaan.

Javascript check

Zoals bij het vorige punt al benoemd is hebben spambots vaak Javascript uit staan om Javascript validatie van het formulier tegen te gaan. Dit in tegenstelling tot gebruikers. Je kunt dus controleren of Javascript uit staat om spam tegen te gaan. Het nadeel is dat er ook gebruikers zijn die Javascript uit hebben staan, zij kunnen dus nooit het formulier verzenden. Je kunt in dit geval bijvoorbeeld alleen een CAPTCHA tonen wanneer Javascript uit staat, echter dan komen de nadelen van een CAPTCHA weer boven water.

Simpele vragen

Je kunt een simpele vraag stellen die correct beantwoord dient te worden. Denk hierbij aan vragen zoals: “Wat is de kleur van gras? Hoeveel is 1+3? Hoeveel dagen heeft een week?”. Zorg er wel voor dat alle mogelijke antwoorden gedekt zijn, bij de som 1+3 bijvoorbeeld “4, Vier en vier”.
Het nadeel is dat bots in geprogrammeerd kunnen worden als de vragen continue hetzelfde zijn, je zult dus telkens een andere vraag moeten stellen om effectief te zijn. Om deze methode te versterken kun je de vraag ook nog in een afbeelding weergeven, i.p.v. tekstueel.

Geluiden

Je kunt bovenstaande vragen of een bepaalde code ook communiceren met behulp van audio. Het is voor spambots bijna niet te doen om dit te kraken, echter er zitten behoorlijk wat nadelen aan. Je beperkt je formulier bijvoorbeeld voor slechthorenden, mensen hebben niet altijd een geluidsbron aangesloten, zijn muziek aan het luisteren of zitten in een luidruchtige omgeving.

Human intervention

Een goede anti-spammethode is het vereisen van verificatie. Denk hierbij aan het verzenden van een e-mail met verificatie-link naar het opgegeven e-mailadres – of een sms naar een telefoonnummer met daarin een code die overgenomen dient te worden. In combinatie met het blokkeren van tijdelijke e-mailadressen kan deze methode erg goed werken. Een e-mailadres of telefoonnummer dient natuurlijk wel verplicht te zijn.

Games

Het spelen van een simpel spelletje om het formulier te verzenden is een nieuwe anti-spammethode. Erg leuk, maar het moet wel aansluiten bij de doelgroep van de website en deze spelletjes worden op dit moment veelal in het Engels aangeboden.
Zie: Are You A Human

Blacklist services

Er zijn anti-spamdiensten zoals bijvoorbeeld “Akismet”. Zodra een formulier verzonden wordt vanaf jouw website zal het bericht eerst gecontroleerd worden door de dergelijke dienst en aan de hand van hun database kan deze vervolgens wel of niet geplaatst worden. Deze methoden houden zeker wel spam tegen, maar aangezien er dagelijks nieuwe spam bij komt is het zeker niet waterdicht. Jammer, want je moet er wel voor betalen.

IP-check / Brute force

Spam wordt ook wel gezien als het plaatsen van vele nepberichten in een korte periode. Je kunt een IP-check inbouwen en het formulier blokkeren zodra er veel berichten van dezelfde afzender komen. Deze methode zal echter alleen effectief zijn bij het blokkeren van menselijke spam. Robots gebruiken vaak meerdere IP-adressen of zogenaamde “proxies” om spam te plaatsen.

Social media

Je kunt mensen vragen om middels een API in te loggen met hun Social Mediaaccount zoals Twitter, Facebook, Google etc. Deze methode zal vrijwel alle spam tegen houden, maar lang niet iedereen heeft zo’n account en het formulier wordt er niet bepaald laagdrempeliger van, veel gebruikers zullen afhaken afhankelijk van de website.

De perfecte CAPTCHA?

Zoals je kunt lezen heeft iedere methode zowel voor- als nadelen. Een perfecte en gebruiksvriendelijke oplossing om zonder CAPTCHA en andere nadelen spam 100% tegen te gaan is er volgens mij nog niet. Je kunt je afvragen of deze er ooit gaat komen. Er zijn in Aziatische landen zelfs bedrijven waar mensen voor 2 à 3 euro per uur de hele dag bezig zijn om CAPTCHA’s e.d. op te lossen en spam te verspreiden (geen grap). Gelukkig zijn veel websites niet interessant voor deze praktijken, ze richten zich met name op de grotere websites.

Hopelijk komt er nog een nieuwe toegankelijke anti-spammethode voor websites die 99- tot 100% hufterproof is, maar tot die tijd kun je door het toepassen van één- of een combinatie van meerdere bovenstaande methodes spam zoveel mogelijk tegen gaan.

Weet je nog een goede anti-spammethode?

Send this to friend