AI

Automatisering

Branding

Design

Marketing

Procesoptimering

SaaS

SEO

Sikkerhed

UX

Webudvikling

Regex injection er en sikkerheds- og stabilitetsrisiko, hvor brugerinput indsættes direkte i et regulært udtryk uden korrekt validering eller escaping. Det kan føre til uforudsigelig adfærd, fejlagtige matches, performance-degradering eller i værste fald denial of service (ReDoS).

Hvad er Regex Injection?

Regex injection opstår, når en applikation dynamisk konstruerer regulære udtryk baseret på input fra brugeren, og dette input ikke behandles sikkert. En angriber kan manipulere regex-strukturen ved at indsætte metategn (.*, |, (), +, ?) og dermed ændre formålet med valideringen eller søgningen.

Det er ikke kodeeksekvering, men kontrol over mønstret.

Hvordan opstår problemet?

Typiske årsager:

  • Brugerinput indsat direkte i regex

  • Manglende escaping af metategn

  • Kompleks regex med backtracking

  • Brug af regex som valideringslogik i stedet for parsing

Eksempel (usikkert): $pattern = "/^$input$/";

Angriberen kan indsætte: .*

og omgå validering.

Hvorfor er Regex Injection alvorligt?

Sikkerhed

  • Omgåelse af input-validering

  • Manipulation af filtrering og søgning

  • Indirekte adgang til data, der burde være skjult

Performance (ReDoS)

  • Katastrofal backtracking

  • CPU-spikes og request timeouts

  • Applikationsnedbrud under load

Stabilitet

  • Regex-fejl der crasher requests

  • Uforudsigelige edge cases

  • Svært at teste og reproducere

Typiske angrebsscenarier

  • Søgefelter med “avanceret søgning”

  • Dynamiske filtre

  • Brugerdefinerede valideringsregler

  • Admin-værktøjer med regex-understøttelse

  • Logfiltrering og rapportering

Best Practice – forebyggelse

Escape altid input

Brug sprogspecifikke escape-funktioner:

  • PHP: preg_quote($input, ‘/’)

  • JavaScript: dedikerede escape helpers

  • Python: re.escape(input)

Undgå dynamisk regex hvor muligt

  • Brug faste regex-mønstre

  • Brug string-sammenligning (===, contains)

  • Brug parser- eller tokenizer-tilgange

Begræns kompleksitet

  • Undgå nested quantifiers

  • Brug non-backtracking regex engines hvis muligt

  • Sæt timeouts eller limits på regex-evaluering

Valider input før brug

  • Whitelist tilladte tegn

  • Begræns input-længde

  • Afvis regex-metategn hvis ikke eksplicit nødvendigt

Hvad beskytter ikke mod Regex Injection?

  • SQL-escaping

  • HTML-escaping

  • WAFs (ofte blinde for regex-kontekst)

  • “Det er kun til intern brug”

Forretnings- og udviklingsmæssig betydning

Drift og performance

Regex injection kan bruges til billig denial of service uden høj teknisk kunnen.

Kodekvalitet

Overforbrug af regex indikerer ofte dårlig domænemodellering og tech debt.

Skalerbarhed

Regex-baserede løsninger skalerer dårligt under uforudsigelige inputs.

Udfordringer og løsninger

Udfordring: Fleksible søgefunktioner

Løsning: Brug strukturerede filtre frem for regex

Udfordring: Legacy-validering

Løsning: Refaktor til eksplicit logik og constraints

Udfordring: Avancerede admin-features

Løsning: Isolér regex-funktionalitet og indfør hårde limits

Opsummering

Regex injection er ikke en edge-case.

Det er et forudsigeligt resultat af dynamisk regex uden kontrol.

Hvis brugere kan påvirke regex-strukturen, har de allerede for meget magt.

Den sikre tilgang er enkel:

  • Fast struktur

  • Escaping som standard

  • Regex som værktøj – ikke fundament

Relaterede begreber

Book et møde

Hvornår?

Vælg dato