Der er nogle begreber, som det er godt at kende, hvis man er internet udvikler. Et af de vigtigste, som folk oftest har svært ved at håndtere, er begrebet ”sikkert nok”. Hvis du koder alting, som var det til et atomkraftværk eller antager du, at intet nogensinde går galt, så har du noget at lære. De løsninger, som jeg har lavet gennem tiden, har været meget forskellige – fra små intranet løsninger til store meget eksponerede sites. I kraft af deres forskellighed har de alle haft forskellige budgetter og ambitioner om at gøre deres til at forbedre verden.
Når man udvikler noget, har mange forskellige stil arter og ambitionsniveauer – nogle koder et stort rod, mens andre har en gode stil, hvor alt kontrolleres, dobbelt-kontrolleres og gerne kontrolleres en ekstra gang bare for at være helt sikker.
Uanset hvad man laver, har jeg efterhånden lært, at begrebet ”sikkert nok” er en værdifuld ven i mange sammenhænge – og at man med en pragmatisk tilgang til den enkelte løsning ofte kan spare mange kræfter – enten up-front når udviklingen starter eller som brandslukning når løsningen er søsat.
Lad mig give to eksempler på hvornår det er vigtigt at kende ”sikkert nok”:
- En del af back-end’en til dette site er en gang hjemmebryggede stumper, der holder rede på lidt af hvert. Det er gemt væk bag en password-beskyttelse, som styres af Apache. Jeg er den eneste der har adgang.
- Tænk så på et andet system - et e-handelssystem eller en online bank
Begge systemet kunne i princippet kodes efter samme sikkerheds paradigmer. Det er de bare ikke.
Eftersom at der er én kendt bruger i det første eksempel (og jeg stoler på hvad vedkommende gør), er det rent overhead og spild af energi, at lave en masse ekstra sikringsmekanismer. De ting man kan i min back-end har intet med personlige eller fortrolige data at gøre og worst-case scenariet kunne være en defacement af sitet.
Et ehandelssystem opsamler løbende data af personlig karakter om brugerne – det har med penge at gøre og kunne derfor være et potentielt og interessant mål for ”internet forbrydere”. Vi kan ikke nødvendigvis identificere enhver bruger (entydigt), fordi de ikke er logget ind.
Hvor det lille backend kan nøjes med at være gemt væk back en standard password beskyttelse for at være ”sikker nok”, skal andre systemer have helt andre mekanismer(*), der beskytter systemet og de data, som det bliver betroet for at være ”sikkert nok”.
Tænk hvis flere kunne lære at se på den enkelte løsning, og vurdere, hvad der skal til, for at den bliver ”sikker nok” frem for blot at skære alt over samme læst – uanset om det er med et højt eller lavt niveau for sikkerheden.
*) Server-side validering af alle input, beskyttelse mod CrossSiteScripting, beskyttelse mod SQL injects og så videre.