Beveiliging. Een heikel woord in de wereld van de webontwikkelaar. Het ontwikkelen van gebruikersvriendelijke webapplicaties staat sinds het begin der tijden op gespannen voet met het begrip beveiliging. Natuurlijk, ieder vorm van softwareontwikkeling heeft te maken met het begrip security, de éne meer dan de andere. Echter nergens is beveiliging zo belangrijk en tegelijkertijd complex als in een webapplicatie.

De complexiteit van webapplicaties en beveiliging heeft een aantal oorzaken, ten eerste is er, zoals in elke applicatie het gebruiksgemak. Veel webontwikkelaars zijn bang dat een hoge mate van beveiliging mogelijke klanten, bezoekers en geinteresseerden afschrikt. Immers wie heeft zin om zestien keer in het uur een wachtwoord opnieuw in te geven? Echter de belangrijkste fouten die worden gemaakt tijdens het ontwerp en de bouw van een webapplicatie hebben geen enkele invloed op het gebruiksgemak van het uiteindelijk eindproduct, denk aan buffer overflows door slechte input validatie, of sql injectie door het afraffellen van fatsoenlijke query escaping.

Een ander aspect wat het beveiligen van webapplicaties zo complex maakt is de diversiteit van de productieomgeving. Bij een normale desktopapplicatie zijn er een groot aantal omgevingsfactoren die vooraf duidelijk vast liggen, of af te bakenen zijn. Voorbeelden zijn het besturingssysteem, de beschikbare software de identiteit van de gebruiker etcetera. In tegenstelling tot een desktopapplicatie staat er bij een webapplicatie maar heel weinig vast wat betreft de omgeving. De bezoeker is niet geidentificeerd, het aantal combinaties van webbrowser en besturingssysteem is nagenoeg oneindig en de applicatie is bereikbaar voor iedereen die een internetverbinding tot zijn beschikking heeft. En dat zijn er best veel.

Dan is er nog het grote aantal verschillende ondersteunende softwarepakketten waar een webontwikkelaar mee te maken krijgt, zoals het besturingssysteem van de server, de webserver, de scripttaal, de databaseserver. Al deze onderdelen kunnen leiden tot beveiligingsproblemen die in de ontwikkelomgeving niet waren voorzien bijvoorbeeld als gevolg van versie verschillen, configuratie verschillen etcetera. Soms kunnen een aantal triviale kwetsbaarheden in combinatie zorgen voor een groot probleem in de webapplicatie, en dat terwijl er in eerste instantie helemaal geen beveiligingsprobleem in de webapplicatie bestond.

Een boek waarvan ik van mening ben dat elke softwareontwikkelaar (en dus ook webontwikkelaar, al ontkennen die graag dat ze dat zijn) gelezen moet hebben is “Secure Coding Principles & Practices” door Mark G. Graff & Kenneth R. van Wyk. Het boek bevat een scala aan praktijk voorbeelden, toe te passen principes en richtlijnen die direct relevant zijn tijdens de ontwikkeling van elk soort applicatie.