Captcha in JavaScript

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.

Vrijwel altijd wordt een captcha gemaakt aan de server-kant. Je kunt het ook aan de cliënt-kant regelen, dus op de PC van de bezoeker. Je mogelijkheden zijn dan wel veel beperkter.

Informatie over het hoe en het waarom van captcha's vind je in het item Captcha: wat het is en hoe je het kunt gebruiken.

Op deze pagina presenteer ik een captcha die is geschreven in JavaScript. Deze captcha is een variant op de gebruikelijke aanpak. De gebruiker krijgt vijf losse plaatjes te zien, die allemaal een beetje van elkaar verschillen. De gebruiker moet er daarvan één kiezen, aan de hand van een aanwijzing. Zie het onderstaande voorbeeld.
Als de gebruiker het verkeerde figuurtje aanklikt, verschijnt er een nieuwe rij plaatjes met bijbehorende aanwijzing. Als de gebruiker op 'Versturen' klikt zonder eerst het juiste plaatje te hebben aangeklikt, wordt het formulier niet verstuurd. Er verschijnt dan een foutmelding.

Ja, ik wil meer weten over de mogelijkheden
die deze techniek mij bieden kan.
Mijn specifieke vraag is:
Mijn gegevens zijn:
Naam:
E-Mail:

De code van het voorbeeld kun je downloaden om zelf te gebruiken, inclusief de plaatjes.

Over de veiligheid
Er wordt gebruik gemaakt van vijf verschillende plaatjes, die in willekeurige volgorde worden getoond. Daarvoor zijn 5! = 1 × 2 × 3 × 4 × 5 = 120 mogelijkheden. Van de vijf plaatjes moet er één woren aangewezen. Daarvoor zijn vijf mogelijkheden. In totaal zijn er dus 120 × 5 = 600 mogelijkheden. Dat zou voor 'gewone' toepassingen voldoende moeten zijn.

Het formulier kan niet worden verzonden als JavaScript is uitgeschakeld.
Om de captcha te laten werken is het nodig dat JavaScript aan staat. Als JavaScript echter is uitgeschakeld, retourneert onSubmit altijd false en zal de browser het formulier niet verzenden.
Elk script kan echter worden misbruikt. Het maakt daarbij niet uit of het script op de server of op de client-PC draait. Ook deze beveiliging is niet waterdicht.
Op internet bestaan servers die automatisch formulieren invullen en verzenden. Handig voor spammers, want er wordt hun veel werk uit handen genomen. Lastig voor de ontvangers, want ze krijgen ongewenste e-mail. Ook dit script is daar gevoelig voor. Er is een soort oplossing voor, maar die wordt hier niet getoond. Op sites die er door waen getroffen is het ingebouwd, daar werkt het goed. Stuur me een mailtje als het jou overkomt, dan vertel ik je hoe je het aanpakt.

Disclaimer
Gebruik van deze techniek is geheel voor eigen risico. De auteur van deze website is niet aansprakelijk voor enige schade die het gevolg is of het gevolg zou kunnen zijn van enige toepassing van deze techniek.
Toepassing van deze techniek op je eigen website betekent automatisch dat je instemt met deze disclaimer en dat je de auteur van deze site vrijwaart van elke schadeclaim.

Gebruik:

De code ziet er als volgt uit:
 
(Zet dit in de <HEAD>)
Als je geen skin gebruikt is de code:

<script src="captcha-120.js"></script>
Als je wel een skin gebruikt (bijvoorbeeld captcha-skin.js) wordt de code:
<script src="captcha-120.js"></script>
<script src="captcha-skin.js"></script>
(Zet dit in de <BODY>, op de plaats in de <FORM>-tag
waar de captcha moet verschijnen).
<script >InitCaptchA()</script>
Neem het attribuut onSubmit op in de <FORM>-tag:
<form action="......" method="post" name="formulier"
onSubmit="return GoCaptchA()">
Dit is de code voor de knoppen:
<input type="submit" value="      Versturen      " style="color: #000099;
    font-weight: bold;" accesskey="V" id="StuurButton">
<input type="button" value="  Opnieuw beginnen  " accesskey="O"
    onclick="DoReset()" id="ResetButton">

Downloaden:
 
Druk op de knop: Download deze code  File: voorb290.zip, 12 802 bytes.

Opmerking:
 
Behalve met een captcha vormt ook een sterk wachtwoord een goede bescherming tegen misbruik van je site. Zie het item Over de sterkte van wachtwoorden voor aanwijzingen voor het maken van sterke wachtwoorden.
 
Ik raad aan om de code in de file captcha-120.js te comprimeren versleutelen met de methode die is beschreven in het item Over het comprimeren van JavaScript-code.

 
terug

html-290; Laatste wijziging: 27 januari 2024