Spam vermijden zonder captcha

Een visuele captcha is een afbeelding die een moeilijk te lezen letter- of cijferreeks bevat die je moet overtypen om te bewijzen dat je geen spambot bent.

Captcha met vervormde woorden very en goopme

Deze antispam-techniek wordt veel gebruikt bij het reageren op een blog, contactformulieren of in aanmeldingsprocedures. In de AnySurfer checklist keuren we deze techniek af bij het ijkpunt over alt-teksten. Dit is een beetje vreemd want de oplossing bestaat er natuurlijk niet in om de letterreeks in het alt-attribuut te zetten. Het probleem is het grootst voor blinden en slechtzienden maar ook dyslectici hebben het er moeilijk mee. Het toegankelijkheidsprobleem overstijgt het gebrek aan alt-tekst want zo een visuele captcha leidt ertoe dat deze bezoekers een formulier niet kunnen verzenden en dus niet reageren op een blogpost, geen vraag stellen via het contactformulier en geen twitter-account aanmaken. In dit artikel geven we een aantal mogelijke alternatieven voor de visuele captcha.

Geen captcha

Jij wil geen spam ontvangen. Om dat te bereiken, val je elke bezoeker lastig met die onleesbare letters die ze moeten overtypen. Je lost jouw spam-probleem op door een probleem te creëren voor al je bezoekers met goede bedoelingen. Alleen al vanuit het standpunt van gebruiksvriendelijkheid is dat geen goed idee. Zoek dus naar een spam-beveiliging die je bezoekers niet pest. Die zal misschien iets minder doeltreffend zijn dan de visuele captcha, maar beter twee spam-berichtjes in je mailbox dan twee klanten die hun bestelling in je webshop niet voltooien.

Honeypot

Spam-bots zullen proberen alle velden van een formulier in te vullen. Voeg dus een veld toe dat de bezoeker niet ziet en ook niet in hoeft te vullen. Wordt het toch ingevuld, dan heb je bijna zeker met een spammer te maken. Bij de formuliervalidatie doe je dus het omgekeerde van wat je normaal doet: enkel accepteren als het veld leeg is.

Noot: dingen verbergen, is niet altijd betrouwbaar. Wie CSS uitschakelt en gebruikers van Sommige screenreaders zullen iets met CSS eigenschap display:none toch te zien krijgen. Geef dus ook dit veld een label waarin je uitlegt dat de gebruiker dit veld mag overslaan als hij het toch zou tegenkomen.

Deze techniek is vrij betrouwbaar totdat de spammer heeft gevonden welk veld de honeypot is. Laat het veld er daarom zo normaal mogelijk uitzien voor een script dat code analyseert: geef het dezelfde attributen als alle andere invoervelden, zet het niet als laatste veld in het formulier, wees bij het verbergen van het veld iets creatiever dan class="hidden" of class="invisible" en noem het honeypot-veld niet name="honeypot" of name="leaveBlank". Maak het juist "aantrekkelijk" door het bijvoorbeeld name="email" te noemen en zet er ook gerust een * bij.

<div class="formfield grapje">
<label for="mail2">
Dit veld hoeft u niet in te vullen*
</label>
<input type="text" name="mail2" id="mail2" />
</div>
.grapje { display: none; }

Genoeg tijd

Mensen doen er langer over dan robots om een formulier in te vullen. Tijd is geld voor de spammer dus de bot wil zo snel mogelijk tewerk gaan. Juist dit onderscheidt "hem" dus van een mens. Weiger een formulier te versturen binnen pakweg tien seconden na het laden van de pagina. jQuery tutorial: Safer Contact Forms Without Captchas.

Akismet

Akismet is voor bloggers onmisbaar om spam tegen te houden. Er komt geen captcha aan te pas. Ze onderzoeken elk bericht voordat het in jouw database terechtkomt en markeren het al dan niet als spam. Het is beschikbaar voor veel systemen zoals Wordpress en Fork CMS en er is zelfs een API. Het is gratis voor persoonlijk gebruik.

E-mails filteren

Deze techniek is het best geschikt voor contactformulieren: configureer je e-mailprogramma of webserver zo dat hij aan goede spam-filtering doet. Zo vermijd je alle spam in je mailbox, niet enkel die van je contactformulier. Dan hoef je echt geen captcha meer op je bezoekers af te sturen.

Te ingewikkeld? Neem dan een gmail-adres en laat daar je berichten toekomen. Gmail is verdomd goed in het filteren van spam.

Alternatief voor de visuele captcha

De vorige technieken hebben de voorkeur omdat een bezoeker met goede bedoelingen niet eens merkt dat er een spam-beveiliging op zit en er dus ook geen tijd mee verliest of frustratie door oploopt. Nu volgen enkele alternatieven die wel een extra handeling vragen van de bezoeker.

E-mailverificatie

Stuur een mail met daarin een link die men moet aanklikken om de transactie te bevestigen. Deze techniek is prima geschikt bij het registreren op een website. Wie surft op het web, zal ook wel over een e-mailadres beschikken. Deze techniek is wellicht minder geschikt bij het posten van een reactie op een blog of bij een contactformulier. Ze wordt heel veel gebruikt bij "ik ben mijn paswoord vergeten" dus zal het wel redelijk veilig zijn.

Verificatie via telefoon

Websites sturen ook wel eens een SMS met een code die men in de webpagina moet invullen, maar dit lijkt ons al iets delicater. Wil iedereen zijn telefoonnummer aan om het even welke site geven? En waarschijnlijk kost je dit meer geld dan een mailtje sturen.

Stel een vraag

Je kan een extra vraag aan je formulier toevoegen waarvan je vrij zeker bent dat de bezoeker het antwoord weet, maar die de spambot niet begrijpt. Vaak gebruikt men een rekensom of een tekstuele vraag.

Deze techniek is betrouwbaar totdat de spambot de vraag wel begrijpt en de antwoorden kan geven. Dit is ook geen goede techniek als de vraag te moeilijk is voor de bezoeker of wanneer hij niet begrijpt waarom hij deze vraag moet beantwoorden die meestal niets te maken heeft met het doel van het formulier dat hij aan het invullen is.

Audiocaptcha

Om het probleem van de visuele captcha op te lossen voor blinden en slechtzienden (niet voor doofblinden) geven meer en meer websites de mogelijkheid om de cijfer- of letterreeks te beluisteren in plaats van visueel te ontcijferen. In één van de allereerste AnySurfer blogposts ging het al over dit onderwerp en om aan te tonen dat het helemaal zo moeilijk niet hoeft te zijn, heeft oud-collega Roel Van Gils toen zelf iets gemaakt in PHP: Audiocaptcha's in de praktijk. Mollom werkt met letters en benoemt ze met het Nato-alfabet (Alfa, Bravo, Charlie, Delta, Echo, ...). Een voordeel van Mollom is bovendien dat hij enkel een captcha toont als de invoer verdacht is.

Perfecte beveiliging bestaat helaas niet

Elke beveiliging zal vroeg of laat gekraakt worden. Als je site populair genoeg is bij spammers zullen ze daar werk van maken. In sommige gevallen loont het zelfs om mensen te betalen om de visuele captcha's op te lossen zodat de bot kan bewijzen dat hij een mens is. Als je een bescheiden Nederlandstalig weblog hebt, is de kans niet zo groot dat ze jouw site uitpikken. En als je de standaardformuliertjes van je CMS wat verandert, ben je ook al veel minder kwetsbaar.

Conclusie

AnySurfer keurt ontoegankelijke captcha's af omdat ze de toegang ontzeggen tot essentiële onderdelen van een website. Captcha's zijn ontoegankelijk:

  • als je moet kunnen zien om de code in de afbeelding te ontcijferen,
  • als je de muis moet hanteren om de poezen aan te klikken,
  • als er wel een audio-alternatief is maar onverstaanbaar zoals bij reCaptcha,

Gebruik een van de eerste technieken als u teveel spam krijgt. U kunt kiezen voor een vraag die iedereen begrijpt en kan invullen, zoals een rekensom. Als u kiest voor een audiocaptcha, test dan of hij verstaanbaar is. En als dit alles niet lukt, vermeld dan een telefoonnummer en e-mailadres waar mensen terecht kunnen die het formulier niet kunnen invullen. En euh, voorzie dat e-mailadres dan van een goede spam-beveiliging.

Reageren op dit artikel kan op ons blog. Andere toegankelijke alternatieven mag u steeds melden in de reacties.

Bronnen