Undgå CSRF-angreb: Sådan sikrer du dine formularer med korrekt validering

Undgå CSRF-angreb: Sådan sikrer du dine formularer med korrekt validering

Når brugere indsender data via formularer på et website, er det afgørende, at du som udvikler kan stole på, at anmodningen faktisk kommer fra den rette bruger – og ikke fra en ondsindet tredjepart. Et af de mest udbredte angreb, der udnytter denne tillid, kaldes CSRF (Cross-Site Request Forgery). Heldigvis kan du med nogle få, men vigtige sikkerhedstiltag beskytte dine brugere og dit website mod denne type angreb.
Her får du en gennemgang af, hvad CSRF er, hvordan det fungerer, og hvordan du kan sikre dine formularer med korrekt validering.
Hvad er et CSRF-angreb?
Et CSRF-angreb udnytter, at en bruger allerede er logget ind på et website. Hvis brugeren fx har en aktiv session på en netbank, kan en angriber forsøge at få brugeren til ubevidst at sende en anmodning – fx en pengeoverførsel – ved at lokke dem til at klikke på et link eller indlæse en side, der automatisk sender en skjult formular.
Fordi anmodningen sendes med brugerens egne cookies og session, ser den for serveren ud som en legitim handling. Resultatet kan være alt fra ændrede kontooplysninger til utilsigtede køb eller sletning af data.
Hvorfor almindelig validering ikke er nok
Mange tror, at server-side validering af inputfelter er nok til at forhindre misbrug. Men CSRF handler ikke om, hvad der bliver sendt – det handler om hvem der sender det, og hvordan anmodningen bliver udløst.
Selv en korrekt udfyldt formular kan være farlig, hvis den sendes fra et andet domæne uden brugerens samtykke. Derfor kræver beskyttelse mod CSRF en mekanisme, der kan bekræfte, at anmodningen faktisk stammer fra den side, brugeren selv har besøgt.
CSRF-tokens – den mest effektive beskyttelse
Den mest udbredte og effektive metode til at forhindre CSRF-angreb er brugen af CSRF-tokens. Et token er en unik, tilfældigt genereret streng, som serveren sender til klienten, når en formular vises. Når brugeren indsender formularen, skal tokenet sendes med – og serveren tjekker, om det stemmer overens med det, der blev udstedt.
Hvis tokenet mangler eller er forkert, afvises anmodningen. På den måde kan en angriber ikke forfalske en gyldig anmodning, fordi de ikke kender det korrekte token.
Sådan implementeres et CSRF-token
- Generér et token på serveren – fx ved hjælp af en kryptografisk sikker tilfældighedsfunktion.
- Gem tokenet i sessionen – så serveren kan genkende det senere.
- Indsæt tokenet i formularen – typisk som et skjult inputfelt.
- Valider tokenet ved indsendelse – og afvis anmodningen, hvis det ikke matcher.
De fleste moderne frameworks – som Laravel, Django, Spring og ASP.NET – har indbygget understøttelse af CSRF-beskyttelse, så du sjældent behøver at implementere det fra bunden.
Yderligere sikkerhedstiltag
Selvom CSRF-tokens er den primære forsvarslinje, kan du styrke sikkerheden yderligere med nogle supplerende tiltag:
- Brug
SameSite-attributten på cookies – sæt den tilStrictellerLax, så cookies ikke sendes med anmodninger fra andre domæner. - Tjek
Origin- ogReferer-headers – de kan bruges til at bekræfte, at anmodningen kommer fra dit eget domæne. - Begræns brugen af GET til læseoperationer – ændringer i data bør altid ske via POST, PUT eller DELETE.
- Hold sessioner korte og sikre – udløbne sessioner reducerer risikoen for misbrug.
Disse lag af beskyttelse gør det markant sværere for angribere at udnytte eventuelle svagheder.
Test og overvågning
Selv med korrekt implementering er det vigtigt at teste din løsning. Brug værktøjer som OWASP ZAP eller Burp Suite til at simulere CSRF-angreb og se, hvordan dit system reagerer.
Overvåg også logfiler for mistænkelige anmodninger – fx gentagne POST-forespørgsler fra ukendte kilder – og sørg for, at fejlmeddelelser ikke afslører unødvendige detaljer om din sikkerhedsstruktur.
En lille indsats med stor effekt
CSRF-angreb er ofte usynlige for brugeren, men konsekvenserne kan være alvorlige. Heldigvis kræver det ikke meget at beskytte sig: et korrekt implementeret token-system og nogle få ekstra sikkerhedsindstillinger kan gøre hele forskellen.
Ved at tage CSRF alvorligt viser du ikke bare teknisk ansvarlighed – du beskytter også dine brugeres tillid og dit websites troværdighed.










