Beveiliging van websites 1/3
Het internet ontwikkelt zich constant. Je kunt het zo gek niet verzinnen of er bestaat een website voor. Ook qua bruikbaarheid en user experience zijn er in de afgelopen decennia grote veranderingen geweest. Om gebruikers van het internet te beschermen is er op gebied van veiligheid ook veel ontwikkeld.
Dit artikel is het eerste gedeelte uit onze driedelige serie over beveiliging.
Lees het tweede gedeelte email spoofing, vertrouwde bronnen en cross site scripting of lees over iframes en certificate pinning in deel 3.
Veiligheid op het internet heeft veel aspecten. Een van die aspecten is op sociaal gebied. We leren internetgebruikers om niet op verdachte links te klikken. We onderhouden gemeenschappen door rotte appels ertussenuit te halen en daarmee een veilige omgeving te creëren. Een van de andere aspecten is hoe een gebruiker de website ervaart. Een rommelig ogende website, of een website waarbij berichten of blokken duidelijk kapot zijn, verlaagt het vertrouwen van een gebruiker in die site. Dit zorgt er bijvoorbeeld voor dat mensen minder snel geneigd zijn om een account te registreren, of om een bestelling te plaatsen.
Hoewel dit ook leuke onderwerpen zijn om het over te hebben, gaat dit artikel meer over technische aspecten van het creëren van een veilige website. In dit driedelige blog zullen wij het kort hebben over hoe je bepaald wat voor maatregelen nodig of gewenst zijn, en een paar technische veiligheidsmaatregelen uitlichten.
THREAT MODEL
Veel veiligheidsmaatregelen tref je niet omdat het kan, maar omdat het beschermt tegen een bepaald gevaar.
Nederland kent bijvoorbeeld een groot aantal dijken, waterkeringen en uiterwaarden. Deze beschermen laag gelegen gebieden en gebieden naast rivieren tegen overstromingen. Zonder zulke bescherming zou regelmatig een stad of gebied onder water staan. Een dijk is echter alleen effectief wanneer deze water tegenhoudt. Als je op een berg van 1km hoogte woont, dan is een waterkering om de zee tegen te houden niet nuttig. De waterkering is nog steeds in staat om de zee tegen te houden, maar in de praktijk is het zeer onwaarschijnlijk dat de zee daar komt.
Op vliegvelden hebben we checkpoints waar we mensen tegenhouden die bommen en/of iets te grote flessen shampoo mee het vliegtuig in willen nemen. Om dit voor elkaar te krijgen kent een vliegveld allerlei systemen die ervoor zorgen dat mensen niet bij een vliegtuig kunnen komen zonder door bepaalde checkpoints te gaan. Een vliegveld is daar redelijk effectief in. Dezelfde soort systemen zul je echter in de regel niet bij iemand thuis terugvinden, hoewel we daar ook liever niet hebben dat iemand met een te grote fles shampoo bom binnenkomt. Waarom niet? Het is onwaarschijnlijk dat dit gebeurt, en de maatregelen die je moet nemen om dit te voorkomen wegen niet op tegen de baten.
Voor een website, web app of zelfs een bedrijf is dit niet anders. Om te bepalen wat voor beveiligingsmaatregelen nodig of nuttig zijn is het belangrijk na te denken over welke gevaren er bestaan, welk risico je bij ieder gevaar loopt en of veiligheidsmaatregelen hier tegenop wegen. Dit heet een threat model.
Een threat model kan op allerlei manieren worden opgezet. Soms gebeurt dit met behulp van een diagram zoals hieronder wordt getoond, soms met een simpele tabel en soms met een flowdiagram waarbij inzichtelijk wordt gemaakt waar gevaren bestaan binnen een applicatie. Bij al deze manieren is de bedoeling om waarschijnlijke en onwaarschijnlijke gevaren in kaart te brengen, en te bepalen wat voor bescherming hiervoor nodig is of welk risico aanvaardbaar is.
Is uw organisatie in de afgelopen tijd veranderd? Sluit uw threat model nog steeds aan op de werkelijkheid? Neem vrijblijvend contact met ons op om te kijken wat wij voor u kunnen betekenen.