Beveiliging op het web


12.06.2014



Een veilige website, eigenlijk zou dat vanzelfsprekend moeten zijn. Toch is dit vaak niet zo. Om nog maar niet te beginnen over de grote beveiligingslekken die de laatste tijd opduiken. Maar wat maakt een website nu precies veilig? Hier komt ontzettend veel bij kijken, helaas te veel om in één blogpost te zetten. Daarom zal ik hieronder de vier belangrijkste punten bespreken. Het begint allemaal met de verbinding tussen de gebruiker en de website.

HTTPS: Een veilige verbinding

Je hebt vast wel eens bovenin je browser het groene slotje gezien. Dit slotje geeft aan dat alles wat je doet op die website wordt verstuurd over een beveiligde verbinding, namelijk HTTPS.

Normaalgesproken gaat dit via de HTTP verbinding. Alles wat je doet, van plaatjes bekijken tot formulieren verzenden wordt onbeveiligd verzonden en kan door een zogeheten man-in-the-middle worden afgeluisterd. Gelukkig is het redelijk ingewikkeld om dit soort aanvallen uit te voeren en zal dit in de praktijk ook niet vaak gebeuren.

Wat maakt HTTPS nou precies veiliger dan HTTP? In tegenstelling tot HTTP versleutelt HTTPS alle verbindingen. Dit gebeurt met twee sleutels. Dit zijn lange reeksen tekens die bijna onmogelijk te kraken zijn. Eén van deze sleutels is voor de website en één sleutel voor de gebruiker. Op deze manier kunnen alleen de gebruiker en de website de data die wordt verzonden uitlezen en wordt een man-in-the-middle aanval onmogelijk gemaakt.

Opslag van wachtwoorden

Hoe gering deze ook is, er bestaat altijd een kans dat een kwaadwillend persoon zichzelf toegang verschaft tot de gegevens achter een website. Daarom moet gevoelige data als wachtwoorden nóóit onversleuteld opgeslagen worden. Mocht een hacker toegang krijgen tot de gebruikersgegevens van een website dan zou hij meteen alle wachtwoorden en de daaraan gekoppelde persoonsgegevens van alle gebruikers in bezit hebben.

Gelukkig is dit makkelijk op te lossen, namelijk door een zogenaamde one-way hash functie toe te passen op wachtwoorden bij zowel het registreren als het inloggen. Deze functie zorgt ervoor dat een wachtwoord onder een unieke waarde wordt opgeslagen die niet terug te koppelen is aan het oorspronkelijke wachtwoord.

Mocht je je wachtwoord kunnen laten opsturen wanneer je deze vergeten bent, dan is dat een teken dat de website je wachtwoord niet versleutelt!

Voorkomen van ongewilde toegang

In de vorige paragraaf werd er gesproken over kwaadwillende personen, hackers. Hackers hebben vaak een heel arsenaal aan methoden waarmee zij proberen togang te verkrijgen tot een website. Eén van de meest voorkomende manieren is SQL-Injection, maar ook bijvoorbeeld cross-site scripting (XSS).

Simpel gezegd voeren hackers allerlei trucjes uit op invoervelden van formulieren waarmee ze mogelijk toegang zouden kunnen verkrijgen tot een administrator account of misschien zelfs de complete database waarin alle gebruikersgegevens staan.

Dit is een iets lastiger probleem, maar ook weer op te lossen door allerlei checks uit te voeren op de invoer van gebruikers en zo de niet-toegestane invoer er uit te filteren en te blokkeren. Tegenwoordig is dit allemaal iets eenvoudiger door de komst van allerlei frameworks die dit automatisch voor je doen.

Veilige opslag van bestanden

Je hebt de verbinding tussen gebruiker en website beveiligd met HTTPS, waardoor je een man-in-the-middle aanval hebt uitgesloten, waardoor dus verstuurde bestanden ook niet kunnen worden gelezen door hackers. Nu rest er alleen nog één ding, namelijk het niet toegankelijk maken van bestanden op de server zelf. Hier zijn verschillende redenen voor en verschillende manieren om dit op te lossen.

Ten eerste kan het voorkomen dat zoekmachines als Google automatisch privé mappen gaan indexeren en gaan tonen in zoekresultaten. Natuurlijk is dit niet de bedoeling. Ten tweede kunnen hackers allerlei bestanden proberen op te gaan vragen als http://www.westsitemedia.nl/uploads/inloggegevens.txt.

Dit is te voorkomen door de mappen niet publiekelijk toegankelijk te maken. Op deze manier kunnen ze alleen bereikt worden wanneer er is ingelogd op de server door de eigenaar van de website óf door middel van een speciaal stuk code dat hiervoor is geschreven.

Conclusie

Er zijn talloze manieren waarop een kwaadwillend persoon een website kan hacken. Als je op bovenstaande punten let zal dit echter een stuk moeilijker worden gemaakt. Wil je er echt zeker van zijn dat je website veilig is, dan zul je iemand die hierin gespecialiseerd is naar je website moeten laten kijken.

Er bestaan overigens ook nog allerlei tools waarmee je kunt controleren of je website echt veilig is.