Tilbake til bloggen
Teknologi Publisert 27.08.2026 6 min lesetid

CAPTCHA-en er der – men beskytter ingenting

En synlig reCAPTCHA-, hCaptcha- eller Turnstile-widget sier lite om et skjema er beskyttet. Her er de typiske feilkonfigurasjonene og hvordan du kontrollerer dine egne skjemaer på minutter.

Mange nettstedseiere legger en CAPTCHA til kontaktskjemaet sitt, ser det lille merket eller avkrysningsboksen og anser søppelpostproblemet som løst. Så fortsetter søppelet å komme. Ofte er selve CAPTCHA-en i orden – den er bare ikke koblet til noe som kan stoppe en bot. Dette innlegget går gjennom de typiske måtene reCAPTCHA, hCaptcha og Cloudflare Turnstile blir til pynt på, og hvordan du kontrollerer dine egne skjemaer.

Hvor beskyttelsen faktisk skjer

Alle tre tjenestene virker etter samme prinsipp. Et skript i nettleseren utfører kontrollene og gir skjemaet et token – en kort streng som sier «denne besøkende bestod». Tokenet følger skjemainnsendingen til serveren din. Først der tas den virkelige avgjørelsen: serveren sender tokenet sammen med en hemmelig nøkkel til leverandøren og får et svar – vellykket eller mislykket, og for reCAPTCHA v3 også en poengsum. Hvis et ledd i kjeden mangler, ser widgeten fortsatt helt normal ut, men en bot som sender direkte til skjemabehandleren din, går rett gjennom.

Kjeden en CAPTCHA avhenger av
1Skriptet lastes
Leverandørens skript lastes og får kjøre på skjemasiden.
2Token utstedes
Nettleseren mottar et kortvarig token som bare kan brukes én gang.
3Token sendes inn
Tokenet sendes til serveren sammen med skjemafeltene.
4Serveren verifiserer
Serveren din kontrollerer tokenet hos leverandøren med den hemmelige nøkkelen.
5Serveren bestemmer
Innsendingen avvises med mindre svaret er positivt (og, for v3, poengsummen er høy nok).
Beskyttelse finnes bare hvis hvert trinn virker – og de avgjørende skjer på serveren, ute av syne.

Testnøkkelen som vinker alt gjennom

Google, hCaptcha og Cloudflare publiserer egne testnøkler slik at utviklere kan kjøre automatiserte tester uten å løse gåter. Med den tilhørende testhemmeligheten lykkes verifiseringen alltid – det er hele formålet. De er ment for lokale miljøer og testmiljøer, men overlever jevnlig overgangen til produksjon: en utvikler limer dem inn under byggingen, nettstedet lanseres og ingen bytter dem ut. reCAPTCHA viser i det minste en merknad i widgeten om at den bare er til testing, men med et usynlig oppsett er det knapt noen som ser etter. Hvis både testnøkkelen og testhemmeligheten er i produksjon, slipper hver innsending gjennom, enten den kommer fra et menneske eller en bot; hvis bare nettstedsnøkkelen er en testnøkkel, mislykkes verifiseringen i stedet, og ekte meldinger kan avvises.

Et token ingen kontrollerer

Den andre klassikeren er en server som aldri spør leverandøren. Widgeten kjører, et token opprettes og sendes inn, og så ignorerer skjemabehandleren det ganske enkelt. Typiske årsaker er håndskrevne skjemaer, kopierte kodebiter som bare dekker nettlesersiden og halvferdige programtilleggsinnstillinger. En nær slektning: serveren anroper verifiseringstjenesten, men kontrollerer bare at forespørselen gikk gjennom, ikke hva svaret sier. Eller poengterskelen for reCAPTCHA v3 settes til 0, som godtar enhver poengsum tjenesten kan returnere. Noen behandlere «feiler åpent»: hvis tokenet mangler eller verifiseringen mislykkes, godtar de meldingen likevel – og en bot utelater bare tokenet.

Når widgeten aldri egentlig lastes

Andre feilkonfigurasjoner ødelegger nettlesersiden i stedet. Hvis nettstedsnøkkelen ikke er registrert for domenet – typisk etter flytting fra testmiljø til produksjon, domenebytte eller et nytt underdomene – nekter leverandøren å utstede tokener og viser en feil i widgeten eller nettleserkonsollen. Etter temabytte eller oppdatering av programtillegg kan widget-koden fortsatt stå på siden mens skriptet som gir den liv, er borte. Et samtykkeverktøy for informasjonskapsler kan ha samme virkning hvis det blokkerer CAPTCHA-skriptet til den besøkende samtykker. Hva som skjer videre, avhenger av serveren: hvis den krever et gyldig token, kan ekte besøkende ikke lenger sende meldinger, og ingen merker de tapte henvendelsene; hvis den ikke gjør det, slipper boter fritt gjennom.

To andre tilfeller er lette å overse. Med reCAPTCHA v3 viser merket i hjørnet bare at skriptet er lastet et sted på siden – kanskje av temaet eller et annet programtillegg – mens integrasjonen i selve skjemaprogramtillegget er slått av. Og mellomlagringsprogramtillegg kan lagre en side sammen med et token innebygd i HTML-en. CAPTCHA-tokener er bare gyldige i noen minutter og kan bare verifiseres én gang, så et mellomlagret token feiler for ekte besøkende; den fristende «rettingen» å slå av kontrollen fjerner stille beskyttelsen.

Utseende og virkelighet
Hva du ser
  • Widgeten viser en merknad om «bare til testformål»
  • v3-merket står i hjørnet
  • Widgeten vises og returnerer et token
  • Søppelposten har stoppet – men det har også ekte henvendelser
Hva som kan foregå
  • Offentlige testnøkler brukes, og hver verifisering lykkes
  • Skjemaprogramtilleggets reCAPTCHA-integrasjon er slått av
  • Serveren sender aldri tokenet til verifisering eller ignorerer resultatet
  • Nettstedsnøkkelen er ikke registrert for domenet, eller mellomlagrede tokener er utløpt

En kort egenkontroll

  1. 1Åpne skjemasiden i et privat vindu, åpne nettleserens utviklerverktøy og se etter feil fra CAPTCHA-skriptet i konsollen.
  2. 2Kontroller at widgeten faktisk vises – én gang før og én gang etter at informasjonskapselbanneret er godtatt – og at skjemaet ikke kan sendes mens den mangler.
  3. 3Kontroller i leverandørens administrasjonskonsoll at nettstedsnøkkelen oppgir produksjonsdomenet ditt (inkludert varianter som www), og at nøklene i skjemaprogramtillegget eller koden samsvarer – ikke nøkler fra dokumentasjon eller et testoppsett.
  4. 4Kontroller i skjemaprogramtilleggets innstillinger at CAPTCHA-integrasjonen er aktivert for akkurat dette skjemaet; for reCAPTCHA v3, kontroller at poengterskelen er over 0.
  5. 5Hvis du har tilgang til koden, finn verifiseringen på serveren og kontroller at den avviser innsendingen når svaret er negativt eller tokenet mangler.
  6. 6Unnta skjemasiden fra fullsidemellomlagring, eller sørg for at tokenet opprettes på nytt i nettleseren.
  7. 7Send en ekte testmelding og kontroller at den kommer frem; gjenta kontrollen etter endringer i tema, programtillegg eller samtykkeverktøy.
Hva en kontroll utenfra kan og ikke kan se
Testnøkler, widget-kode uten skriptet, konsollfeil og blokkerte skript er synlige utenfra – en gratis kontroll på formexposed.com ser etter nettopp disse signalene uten å sende inn noe. Om serveren din virkelig verifiserer tokenet, er ikke synlig på siden; det viser seg bare i serverkoden eller ved en reell innsending.

En CAPTCHA er ett lag, ikke hele beskyttelsen. Kombinert med et fellefelt, en tidskontroll og filtrering på serveren gjør ikke en feilkonfigurasjon ett sted skjemaet helt åpent. Hvis du vil ha et raskt bilde av hvordan skjemaene dine ligger an, skriv inn domenet ditt på formexposed.com – rapporten viser om delene av CAPTCHA-oppsettet som er synlige utenfra, er i orden.