Datavalidering
Datavalidering er grunnleggende i alle utviklingsprosjekter. Formålet er å sikre at data har forventet struktur, innhold og kvalitet før de brukes videre i systemet.
Feil eller ondsinnet data kan føre til:
- sikkerhetssårbarheter, som injeksjon og XSS
- funksjonelle feil og ustabil drift
- feil beslutningsgrunnlag i rapportering og analyse
- redusert kvalitet i AI-modeller og evaluering
OWASP Top 10 har over tid vist at mangelfull validering av input er en gjentakende årsak til alvorlige sårbarheter. Hovedregelen er enkel: data skal valideres ved tillitsgrensen, uansett kilde.
Grunnprinsipper
Datavalidering bør bygges inn i arkitektur og kode, ikke legges til som et etterslep.
- Valider tidlig: Stopp ugyldige data så nær inngangspunktet som mulig.
- Valider eksplisitt: Definer hva som er gyldig, i stedet for å prøve å blokkere alt som er farlig.
- Valider i flere lag: Kombiner klientvalidering, servervalidering og validering i meldings-/integrasjonslag.
- Fail closed: Dersom data ikke kan verifiseres, avvis eller sett dem i karantene.
- Logg avvik: Logg valideringsfeil med nok kontekst til feilsøking, uten å lekke sensitive data.
Anbefalte kontroller i alle prosjekter
Minimumskontroller som bør være på plass i vanlige utviklingsprosjekter:
- Skjema og kontrakter: Bruk tydelige skjema (for eksempel JSON Schema, OpenAPI eller tilsvarende) mellom tjenester for å oppdage kontraktsbrudd tidlig.
- Type- og formatvalidering: Valider datatype, lengde, tillatte tegn, intervaller, datoformat og encoding.
- Semantisk validering: Sjekk regler som ikke fanges av type alene, som gyldige statusoverganger eller avhengigheter mellom felt.
- Kontekstavhengig output-escaping: Escape data korrekt før visning i HTML, URL, JavaScript eller SQL-kontekst.
- Filvalidering: Verifiser MIME-type, filsignatur, filstørrelse og tillatte filtyper. Skann opplastede filer for malware.
- Isolert behandling av risikodata: Vurder sandbox for parsing og behandling av potensielt farlige filer.
- Beskyttelse i nettleser: Bruk Content Security Policy (CSP) for å redusere konsekvens ved XSS.
Datakvalitet og datapreparering for AI-systemer
For løsninger med KI må kontrollene over også utvides. Datavalidering er da både et sikkerhetstiltak og et kvalitetstiltak.
Kontroller som bør være eksplisitt definert:
- Input-validering til modellkall: Valider format, størrelse, språk, struktur og tillatte felt før data går til modell eller embedding-pipeline.
- Datakvalitet for AI: Kontroller manglende verdier, duplikater, outliers, label-feil og skjevheter som påvirker modellens ytelse.
- Datapreparering: Gjør preprocessing deterministisk, testbar og versjonert slik at transformasjoner kan reproduseres.
- Datasett-hygiene for evaluering: Hold trening, validering og test adskilt, og unngå datalekkasjer mellom dem.
- Kontaminering: Sørg for at evalueringssett ikke forurenses av produksjonsdata, prompt-historikk eller manuelle korreksjoner fra drift.
- Sporbarhet: Dokumenter datakilder, transformasjoner, datasettversjoner og evalueringsgrunnlag.
Praktisk gjennomføring i team
Datavalidering fungerer best når den er en fast del av leveranseløpet.
- Definer valideringsregler som kode og versjoner dem.
- Legg valideringstester inn i CI/CD for kontrakter, skjema og kritiske transformasjoner.
- Overvåk valideringsfeil i produksjon for å fange datadrift og integrasjonsbrudd tidlig.
- Gjennomfør jevnlig revisjon av regler når datakilder, API-er eller modeller endres.