Skip to main content

Joomla Extensies

Captcha - Proof of Work

Joomla 6.1 heeft een ingebouwde captcha die werkt zonder Google-account, zonder API-sleutel en zonder dat er iets naar een externe server wordt gestuurd. De plugin heet CAPTCHA - Proof of Work en is direct beschikbaar na de installatie van Joomla 6.1. Dit artikel legt uit wat het is, hoe je het activeert en wat je daarna moet controleren.


Wat is POW Captcha?

POW staat voor Proof of Work, oftewel "bewijs van gedane arbeid." In plaats van de bezoeker te vragen verkeerslichten of zebrapaden aan te klikken of tekst over te typen, laat het de browser van de bezoeker een klein rekenprobleem oplossen. Dat kost een normale browser zo'n 100 tot 500 milliseconden en de bezoeker merkt er niets van.

Voor een spambot die hetzelfde formulier duizenden keren per uur wil versturen, telt die rekenkosten echter op tot een erg hoge belasting. Spam is een kwestie van economie: als elke verzendpoging rekentijd kost, wordt massale spam onhaalbaar.

De captcha is gebouwd op de open source bibliotheek Altcha, ontwikkeld door BAU Software uit Tsjechië. De plugin is MIT-gelicenseerd en zit volledig in de Joomla-core. Er is geen externe dienst bij betrokken.


POW Captcha activeren in Joomla 6.1

Het instellen bestaat uit twee verplichte stappen en twee controles die je daarna uitvoert.

Stap 1: de plugin inschakelen

  1. Ga in het beheerderspaneel naar Extensies > Plugins.
  2. Zoek op captcha
  3. Open de plugin CAPTCHA - Proof of Work.
  4. Stel Status in op Ingeschakeld.
  5. Sla op via Opslaan & Sluiten.

pow captcha plugin settings

Tijdens deze stap zie je drie instellingen waarover je een keuze kunt maken:

Moeilijkheidsgraad
Kies uit Easy, Medium of Hard. Easy is geschikt voor een standaard contactformulier. Hard verhoogt de rekenkosten per verzending, wat nuttig kan zijn voor formulieren die vaak worden misbruikt, zoals gebruikersregistratie. Verander dit alleen als je daadwerkelijk last hebt van spam.

Automatische oplossing
Dit bepaalt wanneer de browser het puzzeltje start. De standaardinstelling "When CAPTCHA field receives focus" is goed voor de meeste situaties. "On submit" voegt een kleine pauze toe bij het indienen van het formulier. "On page load" start zo vroeg mogelijk, maar laat de browser ook rekenen als de bezoeker het formulier nooit invult.

Vervaltijd
Hoe lang de opgeloste puzzel geldig blijft na het oplossen. De standaardwaarde van vijf minuten volstaat voor vrijwel elk contactformulier. Heb je een formulier met meerdere stappen dat de bezoeker langer invult, stel de vervaltijd dan hoger in.

Stap 2: instellen als standaard captcha

  1. Ga naar Systeem > Algemene instellingen
  2. Open het tabblad Website.
  3. Zoek het veld Standaard captcha.
  4. Selecteer CAPTCHA - Bewijs van werk.
  5. Sla op.

pow captcha global default

Vanaf dit moment gebruiken alle formulieren in Joomla die de ingebouwde captcha-koppeling hebben automatisch de proof-of-work captcha. Dat zijn onder andere het contactformulier, de gebruikersregistratie en de wachtwoord-resetpagina.

Stap 3: controleer of het werkt

Open het contactformulier van je website in een privébrowservenster en dien een testbericht in. De verzending moet gewoon doorgaan zonder dat je iets hoeft aan te klikken of in te vullen. Zie je nog een Google reCAPTCHA-widget? Dan is die hard ingebouwd in de template of in een externe extensie. 

pow captcha frontend

Stap 4: Google reCAPTCHA uitschakelen

Als je eerder Google reCAPTCHA gebruikte en POW Captcha nu de standaard is, doe dan het volgende:

  1. Ga naar Extensies > Plugins.
  2. Zoek CAPTCHA - ReCAPTCHA.
  3. Schakel de plugin uit.
  4. Verwijder de site-sleutel en de geheime sleutel uit de pluginconfiguratie.

Sleutels die je niet meer gebruikt horen niet in de database thuis.


Hoe werkt het technisch?

Als de webpagina met een formulier wordt geladen, slaat de Joomla-server een wiskundige uitdaging op in de database: een willekeurig getal, een zout en een doelwaarde. De browser van de bezoeker probeert vervolgens een getal te vinden waarvan de hashwaarde (een soort vingerafdruk) onder de doelwaarde uitkomt. Zodra de browser dat getal heeft gevonden, stuurt hij het mee bij het verzenden van het formulier.

De server controleert dan drie dingen: klopt de wiskundige oplossing, is de vervaltijd nog niet verstreken en is de oplossing nog niet eerder gebruikt? Pas als dat alles in orde is, wordt het formulier verwerkt. De uitdaging wordt daarna verwijderd uit de database zodat niemand dezelfde oplossing tweemaal kan gebruiken.

Dit betekent dat de captcha stateful is: elke formulierweergave schrijft een rij in de database en elke inzending verwijdert die rij. Voor een gewone website is dat verwaarloosbaar. Op een pagina met veel registraties per uur is het de moeite waard om dat in de gaten te houden.


GDPR en privacywetgeving

De Franse privacytoezichthouder CNIL heeft geoordeeld dat Google reCAPTCHA gegevens van bezoekers verwerkt die verder gaan dan strikt noodzakelijk voor spambeveiliging. Twee bedrijven werden beboet, mede wegens het gebruik van reCAPTCHA zonder voorafgaande toestemming. De Duitse toezichthouders staan al jaren op een vergelijkbaar standpunt.

POW Captcha stuurt geen gegevens naar externe partijen. Er is geen verzoek naar Google of een andere dienst, geen vingerafdruk van de browser en geen captcha-cookie. De bezoekersgegevens verlaten de eigen server niet. Voor websites die bezoekers uit de EU ontvangen is dit een concreet verschil.

Let op: als je privacybeleid vermeldt dat je Google reCAPTCHA gebruikt voor spambeveiliging, verwijder of pas die zin dan aan nadat je bent overgestapt.


Toegankelijkheid

Klassieke captcha's zijn al decennialang een struikelblok voor mensen met een visuele beperking, een motorische aandoening of een cognitieve beperking. De W3C publiceerde hierover in 2005 al een nota en het probleem is sindsdien niet opgelost.

POW Captcha is volledig onzichtbaar voor de bezoeker. Er is geen afbeelding om te herkennen, geen audio om te beluisteren en geen knop om op te klikken. De browser doet het werk op de achtergrond. Altcha, de onderliggende bibliotheek, voldoet aan WCAG 2.2 niveau AA en aan de European Accessibility Act 2025.


Huidige beperking: geen variabele moeilijkheidsgraad

Een bekende beperking van de huidige implementatie is dat de moeilijkheidsgraad vast staat. Altcha ondersteunt van zichzelf de mogelijkheid om de moeilijkheidsgraad automatisch te verhogen voor bezoekers die het formulier veel achtereen verzenden: de eerste keer Easy, de tiende keer in tien minuten Hard, enzovoort. Dat maakt gerichte spamcampagnes steeds kostbaarder.

Joomla 6.1 doet dit nog niet, omdat daarvoor een rate-limitingsysteem in de kern nodig is dat er nog niet in zit. Harald Leithner leidt een voorstel voor zo'n systeem, bedoeld voor Joomla 7.x. Er is vooralsnog geen concrete opleverdatum.

Praktisch advies tot die tijd: als een specifiek formulier veel spam ontvangt, zet de moeilijkheidsgraad dan globaal op Hard. Dat voegt een extra seconde of twee toe voor iedere bezoeker, maar stopt de meeste geautomatiseerde aanvallen. Voor aanhoudende problemen is aanvullende beveiliging op server- of firewallniveau een betere oplossing.


Veelgemaakte fouten

reCAPTCHA staat hard gecodeerd in een template
Sommige Joomla-templates plaatsen een reCAPTCHA-widget rechtstreeks in de formuliercode, los van de Joomla captcha-instelling. Het wijzigen van de standaard captcha in Globale configuratie heeft daar geen effect op. Je moet dan de templatecode aanpassen of overstappen naar een template die de Joomla captcha-koppeling gebruikt.

Externe formulierenbuilders met eigen captcha-instelling
Extensies als ChronoForms, Convert Forms, RSForm!Pro en Fabrik hebben een eigen captcha-instelling per formulier die je handmatig moet aanpassen. Sommige extensies werken niet met de Joomla standaarden waardoor het niet mogelijk is om deze captcha te gebruiken. Neem contact op met de ontwikkelaar voor meer informatie.

Paginacache actief op formulierpagina's
Als een formulierpagina gecached wordt, bakt de captcha-uitdaging mee in de gecachede HTML. Elke bezoeker krijgt dan dezelfde uitdaging, wat niet werkt en ook een veiligheidsprobleem is. Controleer of jouw cacheoplossing formulierpagina's uitsluit. De meeste Joomla-cacheoplossingen doen dit standaard al.

Twee captcha-plugins tegelijk actief
Een website die zowel reCAPTCHA als POW Captcha actief heeft staan, doet bij elke formulierverzending dubbel werk. Schakel reCAPTCHA uit als POW Captcha de nieuwe standaard is.


Veelgestelde vragen

Werkt POW Captcha ook op mijn contactformulier?
Ja, als je Joomla's eigen contactcomponent gebruikt. Andere formulieren werken ook, mits de extensie gebruikmaakt van de Joomla captcha-koppeling.

Moet ik een account aanmaken of iets registreren?
Nee. De plugin werkt volledig zonder registratie, API-sleutel of externe dienst.

Merkt de bezoeker er iets van?
Normaal gesproken niet. De browser lost het puzzeltje op in de achtergrond. Er verschijnt geen checkbox, afbeelding of andere vraag.

Is POW Captcha beschikbaar in Joomla 4/5?
Nee. De plugin plg_captcha_powcaptcha is alleen aanwezig in Joomla 6.1 en hoger.

Wat gebeurt er als de browser JavaScript heeft uitgeschakeld?
Het puzzeltje wordt opgelost via JavaScript. Zonder JavaScript werkt de captcha niet. Voor de overgrote meerderheid van bezoekers is dit geen probleem; moderne browsers draaien JavaScript altijd.

Hoe weet ik of het echt werkt?
Open de browser-ontwikkelaarshulpmiddelen (F12), ga naar het tabblad Netwerk en dien het formulier in. Je ziet een extra formulierveld met de naam altcha meegaan in de POST-data. Dat is het bewijs dat de captcha actief is en werkt.

Mijn formulier heeft nog een reCAPTCHA-widget na de overstap. Wat nu?
Dan is reCAPTCHA direct in de templatecode of extensie ingebakken en niet via de Joomla captcha-koppeling geladen. Raadpleeg de documentatie van je template of extensie voor hoe je dat aanpast, of neem contact op met je webbeheerder.

Moet ik mijn privacybeleid aanpassen?
Ja, als daarin staat dat je Google reCAPTCHA gebruikt. Na de overstap naar POW Captcha geldt dat niet meer. Je privacybeleid hoeft voor de captcha geen externe dienst meer te vermelden.

Spam blokkeren?

Heb je last van spam of heb je hulp nodig bij het instellen van deze Captcha?
Jeroen Moolenschot

Over Jeroen

Sinds 2006 werk ik met Joomla! Ik bouw en onderhoud Joomla-websites en webshops. Daarnaast heb ik veel kennis van zoekmachine-optimalisatie (SEO), hosting en het ontwikkelen van templates en extensies.

Ik bezoek regelmatig JoomlaDagen en gebruikersgroepen, waar ik soms ook als spreker optreed.

Daarnaast zet ik me actief in voor de Joomla-community. Ik ben lid van het Joomla Extensions Directory-team en organiseer de Joomla-gebruikersgroep Breda en JoomlaDagen Nederland.

Ben je op zoek naar een Joomla-specialist? Neem gerust contact met me op!

Populaire artikelen

jooa11y - De Joomla Toegankelijkheidscontroleur plugin

Bij het ontwikkelen van een website is toegankelijkheid een belangrijk onderdeel geworden de afgelo…

Een chatfunctie toevoegen aan Joomla

Wil je graag direct contact met de bezoekers van jouw website? Zodat je meteen vragen van (potentië…

Inloggen als andere gebruiker met Shack User Switching

Wanneer je een website hebt met verschillende gebruikers en hun eigen rechten, dan is soms handig o…

Geplande taken

Geplande taken in Joomla zijn geautomatiseerde processen die op vooraf ingestelde tijden worden uit…

Gedrag - Achterwaartse compatibiliteit

Joomla staat bekend om zijn flexibiliteit, maar bij grote upgrades – zoals de stap van Joomla 5 naa…