Skip to content

🛡️ Øvelse 19 – Inputvalidering i en webapplikation

ℹ️ Information

Formålet med denne øvelse er at repetere inputvalidering og Regex, samt at forvise én ud af to tilgange til inputvalidering i webapplikationer. I denne øvelse anvendes manuelt implementeret inputvalidering.

Fremgangsmåden i denne øvelse er den samme som i øvelse 18. Denne gang er det dog ikke en konsolapplikation, der skal anvende inputvalidering, men en webapplikation. Projektet, der skal anvendes, er ValidateTheNameWebApplication.

Applikationen kan eksekveres inde fra projektmappen med kommandoen dotnet run, hvorefter du kan navigere til applikationens URL-adresse i din browser og afgive input til validering.

Applikationen har en frontend, som eksekveres i browseren. Den består af en POST-form, som kan sende data til applikationen via et HTTP POST-request. Når disse data sendes fra browseren til applikationen, overskrider de en tillidsgrænse og skal derfor valideres. Implementeringen af POST-formen kan ses i projektmappen under Views->Name->Index.cshtml. POST-formen skal dog ikke ændres.

I øvelsen skal du implementere valideringslogik i metoden NameIsValid i controllerklassen NameController.cs, som kan findes i projektmappen Controllers->NameController. Fremgangsmåden er identisk med den forrige øvelse.


📌 Fokus på konceptet, ikke teknologistakken

⚠️ Bemærk:
Denne øvelse handler om inputvalidering som sikkerhedsprincip i webapplikationer – ikke om webudvikling eller ASP.NET specifikt.

Øvelsen fokuserer på sikkerhedsdesign og håndtering af input ved tillidsgrænser, hvilket gælder på tværs af teknologier og programmeringssprog.

➕ Eksemplerne er lavet i en .NET-webapplikation, men principperne er generelle og overførbare til andre teknologier som Java, Python eller JavaScript.

📄 Øvelserne tager ikke nødvendigvis højde for best practices eller konventioner i det anvendte sprog eller framework.
Hvis du vil forstå, hvordan inputvalidering implementeres korrekt og sikkert i netop den teknologistak, du arbejder med, bør du konsultere den officielle dokumentation.


📝 Instruktioner

  1. 📏 Valider, at navnet i argumentet nameInput ikke er længere end 20 tegn.
  2. 📐 Valider, at navnet i argumentet ikke er kortere end 3 tegn.
  3. 🔤 Valider, at navnet kun indeholder alfabetiske karakterer ved hjælp af Regex (brug ikke andre metoder til dette).
  4. ✅ Test valideringen ved at køre applikationen og prøve forskellige inputs.
    Tip: Sørg for at validere længden, inden du bruger Regex på inputtet.

🤔 Refleksionsspørgsmål

  1. Hvorfor er det vigtigt at validere input i webapplikationer, især når data sendes via HTTP POST?
  2. Hvordan hænger inputvalidering i webapplikationer sammen med konceptet om tillidsgrænser?
  3. Hvilke risici kan opstå, hvis inputvalidering ikke udføres korrekt i en webapplikation?
  4. Hvordan adskiller validering i webapplikationer sig fra validering i konsolapplikationer?
  5. Hvordan kan inputvalidering bidrage til at forhindre angreb som SQL Injection og Cross-Site Scripting (XSS)?
  6. Hvorfor skal inputvalidering altid foretages på API- eller serversiden, og ikke kun i browseren?

Kobling til relevante standarder og principper

Element i øvelsen Relateret standard / princip Kommentar
Inputvalidering ISO/IEC 27002:2022, afsnit 8.26 (applikationssikkerhed) Anbefaler validering og integritetstjek af input til en applikation.
OWASP ASVS 5.0.0, kontrol 2.2. (Input Validation) Krav om validering af data
Secure by Design (Johnsson et al.) Understreger vigtigheden af at beskytte tillidsgrænser og sikre korrekt inputvalidering.

🔗 Inputvalidering beskytter systemet ved at sikre, at data, der krydser tillidsgrænser – f.eks. fra brugerinput, API-kald eller POST-requests – er korrekt og sikkert formateret, og dermed mindsker risikoen for injection-angreb og DoS.


Last update: 2025-10-30 12:07:19