Captcha: wat het is en hoe je het kunt gebruiken

Vaak zie je bij een formulier een plaatje staan met verwrongen letters en/of cijfers, zoals de voorbeelden hier onder. Zo'n plaatje heet "captcha".
 

Voorbeeld   Voorbeeld

Om het formulier te kunnen versturen moet je die karakters overtypen in een speciaal daarvoor aanwezig tekstveld. Als je het goed hebt gedaan wordt het formulier verstuurd. Als je fouten hebt gemaakt verschijnt er een ander plaatje en moet je het overdoen, net zolang tot het goed is.

Dit verhaal gaat over het hoe-en-wat van deze plaatjes.

Het probleem
Op internet is er een pest die spam heet. Het zijn die vervelende, ongevraagde e-mail berichten met reclame voor pillen en poeders, nep-horloges, enzovoort.
Één van de methodes om spam te versturen gaat met behulp van een computer-programma dat het internet afstruint op zoek naar websites met een of meerdere formulieren. Als het programma een formulier vindt vult het zelf de velden in met ongewenste reclame-uitingen of andere troep.
De URL van de formulieren wordt onthouden, zodat je binnen de kortste keren helemaal bedolven wordt met spamberichten. Voor een webmaster is dat niet fijn.

Voor de goede orde:

Het gaat hier over computerprogramma's die
zelfstandig formulieren op websites invullen
.

Als je alleen maar reclame mail krijgt is dat niet leuk. Maar er gebeuren op deze manier veel engere dingen. Vaak wordt er een hyperlink naar een website getoond. Als je die -bedoeld of onbedoeld- aanklikt, krijg je inderdaad een website te zien, variërend van een wit scherm via een nagemaakte HTTP 404-fout ('gevraagde website wordt niet gevonden') tot en met een fraai opgemaakte webpagina. Op de achtergrond wordt er echter malware op je PC geïnstalleerd en uitgevoerd. Voor je er erg in hebt worden je passwords gestolen en misbruikt om zaken aan je website te wijzigen.
Zo is het mij gebeurd dat de toegangscodes naar een paar van mijn webhosts zijn gejat. Binnen de kortste keren werden de JavaScript-bestanden van mijn websites met behulp van FTP op de server gewijzigd. Er was code toegevoegd die malware ging downloaden en uitvoeren op de PC's van de bezoekers van mijn websites.
Aan de functionaliteit van de websites was verder niets veranderd. Het viel dus niet op, alleen leken de sites soms wat trager. De internet security suite die ik draai reageerde niet! Deze website is overigens nooit geïnfecteerd geraakt.

De bezoekers van een geïnfecteerde site raken op deze manier óók geïnfecteerd zonder dat ze het in de gaten hebben. Hierdoor verspreidt de malware zich snel.

Het probleem zit er in dat computerprogramma's in staat zijn om formulieren op websites in te vullen. De moraal van dit verhaal is dus:
 

Zorg ervoor dat de formulieren van je website
alleen worden ingevuld en verzonden door mensen.
 
Voorkom dat computer-programma's je formulieren
invullen en verzenden!

Dit kun je bereiken met behulp van een captcha in je formulieren.

Captcha's
Captcha is een afkorting van "Completely Automated Public Turing-test to tell Computers and Humans Apart". Vrij vertaald is dat: Geheel automatische openbare Turing-test om mensen en computers van elkaar te onderscheiden.

In deze definitie vallen meteen een paar dingen op:

Hoe veilig is het?
Bij een Turing-test stelt een mens de vragen. Bij captcha stelt een computer de vragen. Daarom spreekt men bij captcha ook wel van een 'omgekeerde Turing-test'. Dat doet al vermoeden dat er iets mis mee is.

Omdat bij captcha de vragen worden gesteld door een computer, is de test bepaald niet waterdicht. Een computer kan nooit slimmer zijn dan de mensen die hem programmeren. Er bestaat -dus- al software die captcha's (zoals bovenaan deze bladzijde) kan ontcijferen en daarmee de beveiliging kan omzeilen. Voor 'gewone' toepassingen geeft captcha een redelijke bescherming tegen het verkeerd gebruik van de formulieren op je site.

Het omzeilen van captcha's is vooral interessant voor mensen die spam versturen en/of malware verspreiden. Deze lieden gebruiken graag diensten zoals Hotmail, gMail, Yahoo!, enzovoort. Het hebben van véél accounts bij dit soort diensten is goud waard voor spammers, omdat ze hun berichten dan kunnen versturen met een betrouwbaar lijkende afzender. Om deze reden presenteren de grote aanbieders van web-mail (maar ook diensten als eBay) een captcha bij het aanmaken van een nieuw account. Maar ook die captcha's worden omzeild.

Het gegeven dat men steeds weer probeert om beveiligingen te omzeilen vind ik een zorgelijke ontwikkeling. Het bedenken van steeds nieuwe beveiligingen maakt eigenlijk dat je steeds achter de feiten aan loopt te rennen. Uiteindelijk levert het weinig op. De spammers en verspreiders van malware gaan gewoon hun gang.

Recente ontwikkelingen zijn onder andere:

Van al deze ideeën moet helaas op voorhand worden vastgesteld dat het ook daarmee niet waterdicht te krijgen is. De vragen binnen de Turing-test worden nl. nog steeds door een computer gesteld. En computers zijn nog steeds niet slimmer dan mensen.

Captcha toepassen in je website
Een captcha pas je alleen toe in je eigen website als dat nodig is. Dat wil zeggen: als jij, de webmaster, merkt dat de formulieren van je site worden misbruikt voor het versturen van spam of anderszins. Captcha's in je formulieren zetten "om het hebben van captcha's" is teveel van het goede. Captcha's zijn voor de gebruikers namelijk niet echt prettig; eigenlijk stoort het alleen maar.

Vrijwel altijd wordt een captcha gemaakt aan de server-kant. Er is dus een programma voor nodig dat draait bij je webhost. Je kunt ook een internet-dienst gebruiken, zoals reCAPTCHA, van Google. Via een script kun je dan een captcha opvragen als er vanaf je eigen site een formulier wordt opgeroepen. Dit maakt de bladzijde met het formulier wel wat trager, omdat er op een externe dienst moet worden gewacht.
Je kunt het ook aan de cliënt-kant regelen, dus op de PC van de bezoeker. Je mogelijkheden zijn dan wel veel beperkter. Het is niet goed mogelijk om heel veel verschillende plaatjes te gebruiken, tenzij je een groot hostingpakket hebt. Het 'real-time' aanmaken van een captcha-plaatje is dan niet mogelijk.

Toch is het met JavaScript goed mogelijk een captcha-systeem te maken dat ook nog een behoorlijke beveiliging geeft. Zie daarvoor het item Captcha in JavaScript.

Opmerking:Deze is zelfs voor mensen onleesbaar!
Het is natuurlijk wel zo dat een captcha voor mensen leesbaar moet zijn. Het voorbeeld hiernaast is een schoolvoorbeeld van hoe het NIET moet!

 
terug

html-289; Laatste wijziging: 24 januari 2024