Skip to content

Øvelse 19 – Inputvalidering i en webapplikation

Source code

private Boolean NameIsValid(string name){
    //Insert logic for name validation here, and return the correct boolean value true/false

    if (name == null || name.Length > 20 || name.Length < 3) return false;

    Regex regex = new Regex(@"^[A-Za-zÆØÅæøå]+$");

    if (!regex.IsMatch(name)) return false;

    return true;
}

Reflekterende spørgsmål

  1. Hvorfor er det vigtigt at validere input i webapplikationer, især når data sendes via HTTP POST?

POST metode bruges til at indsende data til et system, f.eks. til at oprette og redigere entiteter. Derfor er det vigtigt at validere disse requests da input kan komme fra hvem som helst udenfor tillidsgrænsen.

  1. Hvordan hænger inputvalidering i webapplikationer sammen med konceptet om tillidsgrænser?

Det hænger sammen på den måde at der vil være en tillidsgrænse mellem frontend (webapplikation) og backend (api) hvor man ikke kan stole på det som bliver sendt ind fra frontend da det kan være tilfældige brugere (også ondsindede). Derfor skal man tjekke alt input for at være sikker på at det ikke indeholder utilsigtede input.

  1. Hvilke risici kan opstå, hvis inputvalidering ikke udføres korrekt i en webapplikation?

Man kan f.eks. risikere Cross-Site Scripting (XSS) eller SQL-injection (SQLi) angreb.

  1. Hvordan adskiller validering i webapplikationer sig fra validering i konsolapplikationer?

Forskellen er at input data som regel sendes via HTTP (da man har både frontend og backend), hvilket det ikke gør i en konsolapplikation. Derfor bør man også have indputvalidering både i frontend og backend.

  1. Hvordan kan inputvalidering bidrage til at forhindre angreb som SQL Injection og Cross-Site Scripting (XSS)?

Hvis man f.eks. ikke tillader tegn som "- ' < >" som bruges i disse injections, så kan det ikke sendes ind som indput og senere blive indlæst i applikationen.

  1. Hvorfor skal inputvalidering altid foretages på API- eller serversiden, og ikke kun i browseren?

Fordi validering i browseren let kan omgås ved at ændre direkte i HTTP requests.

Kobling til standarder

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.