Tilbake til bloggen
Grunnleggende Publisert 19.08.2026 6 min lesetid

Hva som faktisk beskytter et skjema: CAPTCHA, fellefelt, tidsfelle, CSRF

De fleste kontaktskjemaer bygger på ett enkelt triks mot søppelpost, og mange av disse triksene stopper bare de enkleste botene. Hva hvert beskyttelseslag stopper, hva det koster og hvilken kombinasjon som gir mening.

Søppelpost gjennom kontaktskjemaer kommer sjelden fra en person som skriver for hånd. For det meste er det programvare som finner skjemaer, fyller ut hvert felt og sender resultatet – tusenvis av ganger. Flere forsvar finnes, og de virker på svært forskjellige punkter. Når du vet hva hvert av dem egentlig gjør, unngår du to feil: et skjema uten reell beskyttelse og et skjema som er så tungt bevoktet at ekte mennesker gir opp.

Beskyttelseslag sammenlignet
Lag og hva det stopper
  • Fellefelt: enkle boter som fyller ut hvert felt
  • Tidsfelle: skript som sender inn umiddelbart etter lasting
  • CAPTCHA: det meste av generell automatisering
  • CSRF-token: forespørsler sendt direkte til endepunktet
  • Frekvensgrense: oversvømmelser fra én kilde
  • Arbeidsbevis: billige masseinnsendinger, uten sporing eller gåter
  • Serverkontroller: alt som omgår nettleseren
Hva det overser eller koster
  • Målrettede boter hopper over det; hvis det skjules dårlig, leser skjermlesere det opp
  • Boter som venter; uten signatur på serveren er den lett å forfalske
  • En hindring for alle, tilgjengelighetsbarrierer, ofte tredjepart; løsningstjenester finnes
  • Boter som først laster siden, får også et gyldig token
  • Søppelpost fordelt på mange IP-adresser
  • En målbevisst avsender med datakraft; krever JavaScript
  • Ingenting alene – men uten dem er hvert annet lag pynt
Intet enkelt lag dekker alt. Billige, usynlige lag filtrerer mesteparten; tyngre lag er for vedvarende, målrettet søppelpost.

Fellefelt og tidsfelle: usynlige filtre

Et fellefelt er et ekstra felt mennesker aldri ser, som et felt kalt «website» skjult med CSS. Enkle boter fyller ut hvert felt, så et utfylt fellefelt signaliserer automatisering, og serveren kan stille forkaste meldingen. Boter skrevet for nettstedet ditt, eller som gjengir siden som en nettleser, hopper over det. Skjul det ordentlig: et felt som bare er flyttet utenfor skjermen, kan leses opp av skjermlesere, nås med Tab-tasten eller fylles ut automatisk. Bruk aria-hidden, tabindex -1 og autocomplete off, pluss en nøytral etikett som ber den som havner der, om å la det stå tomt.

En tidsfelle registrerer når skjemaet ble levert, og avviser innsendinger som kommer urimelig raskt. Mennesker trenger noen sekunder for å lese og skrive; mange skript sender innen en brøkdel av et sekund. Tidsstempelet må kontrolleres på serveren og beskyttes mot manipulering, for eksempel signeres eller oppbevares i økten – et vanlig skjult tidsfelt skrives ganske enkelt om av boten. Hold terskelen lav, siden automatisk utfylling også gjør ekte mennesker raske. Boter som bare venter, kommer gjennom: en tidsfelle er et filter, ikke en mur.

CAPTCHA: effektiv, men ikke gratis

En CAPTCHA ber om dokumentasjon på at ingen bot er i arbeid – fra bildeoppgaver til kontroller som kjører i bakgrunnen; vanlige tjenester er reCAPTCHA, hCaptcha, Cloudflare Turnstile og Friendly Captcha. Den stopper det meste av generell automatisering, og derfor er den så populær. Men hver synlige oppgave er en hindring der noen besøkende gir opp, og de fleste tjenester laster et tredjepartsskript, noe som reiser spørsmål om personvern og samtykke. En CAPTCHA hjelper også bare hvis den er riktig satt opp: en offentlig testnøkkel, en widget uten skriptet eller et token serveren aldri verifiserer, ser ut som beskyttelse, men er det ikke. En gratis kontroll på formexposed.com påpeker slike feil utenfra.

Tilgjengelighet er en del av kostnaden. Bildeoppgaver stenger ute blinde og mange svaksynte, lydalternativer hjelper ikke døvblinde, og vanskelige logikkoppgaver belaster mennesker med kognitive funksjonsnedsettelser. WCAG 2.2 suksesskriterium 1.1.1 krever et tekstalternativ som beskriver CAPTCHA-ens formål og alternative former for ulike sanser. Bakgrunnskontroller unngår det meste av dette, men når de blir mistenksomme, er reserveløsningen ofte en visuell oppgave igjen – test det forløpet med tastatur og skjermleser.

CSRF-token: beskyttelse mot forfalskning, ikke mot søppelpost

Et CSRF-token er en tilfeldig verdi serveren legger i skjemaet og forventer tilbake. Det ble laget mot cross-site request forgery, der et annet nettsted får en besøkendes nettleser til å sende en forespørsel den besøkende aldri mente å sende. På et offentlig kontaktskjema har det en sideeffekt: boter som sender direkte til skjemaadressen uten å laste siden, avvises. Enhver bot som henter siden og sender tokenet tilbake, kommer gjennom. De fleste rammeverk og skjemaprogramtillegg har uansett CSRF-tokener – behold dem aktivert, men ikke regn dem som søppelpostbeskyttelse.

Hva som må skje på serveren

Kontroller bare i nettleseren beskytter ingenting
Alt som bare kjører i nettleseren – JavaScript-validering, et skript som kontrollerer fellefeltet, et CAPTCHA-token ingen verifiserer – hoppes over så snart noen sender forespørselen direkte. Hver avgjørelse om å godta en melding hører hjemme på serveren.
  • Valider hvert felt på nytt på serveren: obligatoriske felt, lengde, e-postformat og ingen linjeskift i felt som havner i e-posthoder.
  • Verifiser CAPTCHA- og arbeidsbevistokener ved hver innsending, hos utstedertjenesten eller i egen kode, og avvis tokener som gjenbrukes.
  • Begrens innsendinger per IP-adresse og tidsvindu. Det stopper oversvømmelser fra én kilde; søppelpost spredt over mange adresser trenger andre lag.
  • Vurder arbeidsbevis: før sending løser nettleseren en liten beregningsoppgave. Besøkende ser ingen gåte og ingenting spores, men masseinnsending blir kostbart.

En fornuftig kombinasjon: to eller tre lag

  1. 1Begynn med de usynlige lagene: et tilgjengelig fellefelt og en signert tidsfelle, begge kontrollert på serveren.
  2. 2Legg til en frekvensgrense per IP-adresse slik at én kilde ikke kan oversvømme skjemaet.
  3. 3Hvis målrettet søppelpost fortsatt slipper gjennom, legg til arbeidsbevis eller en CAPTCHA – helst en uten synlig gåte og med et tilgjengelig alternativ.
  4. 4Behold CSRF-tokenet rammeverket ditt gir – som en bonus, ikke som et forsvar.
  5. 5Test resultatet som en besøkende – bare tastatur, med skjermleser, på telefon – og kontroller at ekte meldinger fortsatt kommer frem.

På mange nettsteder fjerner fellefelt, tidsfelle og frekvensgrense sammen allerede mesteparten av generell søppelpost uten noen synlig hindring; en CAPTCHA er reserven når det ikke er nok. På WordPress kombinerer det gratis formexposed-programtillegget fellefelt, tidskontroll og arbeidsbevis uten Google. For å se hva skjemaet ditt viser utenfra – hvilke lag som finnes, om en CAPTCHA er effektivt konfigurert – trenger en gratis kontroll på formexposed.com bare et domene, ingen konto. Den kan ikke se serverkoden din, så serverdelen er fortsatt din oppgave.