Je laat een website bouwen en de opleverdatum nadert. De ontwerpen zien er goed uit, de content staat klaar. Maar is er ook iemand die de beveiliging heeft doorgelicht? In de praktijk is dat het onderdeel dat het vaakst wordt overgeslagen, en dat is precies waar het later misgaat.
Wat valt er eigenlijk te beveiligen op een website?
Een website is geen gesloten systeem. Zodra een site live staat, is hij bereikbaar voor iedereen, inclusief mensen met slechte bedoelingen. Dat klinkt dramatisch, maar het is gewoon de werkelijkheid van hoe het internet werkt.
De kwetsbaarheden zitten op meerdere plekken tegelijk. Denk aan het contentmanagementsysteem dat niet up-to-date is, aan formulieren die invoer niet goed valideren, of aan een inlogpagina zonder beveiliging tegen herhaalde pogingen. Elk van die punten is een potentiële ingang voor iemand die er misbruik van wil maken.
Wat veel mensen niet beseffen, is dat aanvallen zelden handmatig worden uitgevoerd. Geautomatiseerde scripts scannen het internet voortdurend op bekende zwakke plekken. Als jouw site een verouderde plug-in heeft of een standaardwachtwoord, wordt dat binnen uren gevonden. De vraag is dus niet óf jouw site aangevallen wordt, maar wanneer en hoe goed je voorbereid bent.
Bij webontwikkeling hoort beveiliging daarom niet aan het einde van het traject thuis, maar al in de ontwerpfase. Een ontwikkelaar die pas na de bouw nadenkt over beveiliging, bouwt kwetsbaarheden structureel in. Die zijn later veel duurder te repareren dan wanneer je ze vooraf had voorkomen.
Welke beveiligingschecks horen bij een goede oplevering?
Als opdrachtgever hoef je geen technisch expert te zijn om te weten of beveiliging serieus is genomen. Je kunt gewoon vragen stellen en verwachten dat je antwoord krijgt. Hieronder staan de controles die bij elke professionele weboplevering horen.
SSL-certificaat en HTTPS
Dit is de absolute basis. Zonder geldig SSL-certificaat verstuurt jouw site gegevens onversleuteld. Browsers markeren zulke sites inmiddels als onveilig, en dat is niet zonder reden. Controleer of het certificaat correct is ingesteld en automatisch verlengt.
Beveiligde inlogomgeving
De beheerpagina van een website is een geliefd doelwit. Zorg dat de URL ervan niet de standaard is (zoals /wp-admin bij WordPress), dat er een limiet zit op inlogpogingen en dat tweefactorauthenticatie beschikbaar is. Dit zijn geen luxe opties, dit is standaard hygiëne.
Invoervalidatie en SQL-injectiebeveiliging
Elk formulier op je site, van een contactformulier tot een zoekbalk, is een plek waar kwaadaardige invoer kan binnenkomen. Een goede ontwikkelaar zorgt dat alle invoer wordt gecontroleerd voordat die de database bereikt. Dit heet input sanitization en het voorkomt een van de meest voorkomende aanvalsvormen.
Verborgen foutmeldingen
Als er iets misgaat op je site, mag de bezoeker geen technische details te zien krijgen. Foutmeldingen die databasenamen of bestandspaden tonen, geven aanvallers bruikbare informatie. Zorg dat foutmeldingen voor de bezoeker neutraal zijn en dat de technische details alleen intern worden gelogd.
Rechtenstructuur van gebruikers
Niet iedereen die toegang heeft tot de website heeft dezelfde rechten nodig. Een redacteur hoeft geen plug-ins te kunnen installeren. Een klant die zijn eigen account beheert, hoeft de gegevens van andere klanten niet te zien. Het principe van minimale rechten is een van de meest effectieve beveiligingsmaatregelen die er is.
Regelmatige back-ups
Back-ups zijn geen beveiligingsmaatregel in de strikte zin, maar ze zijn wel je vangnet als alles misgaat. Vraag waar back-ups worden opgeslagen, hoe vaak ze worden gemaakt en hoe lang het duurt om een back-up terug te zetten. Als niemand dat weet, is er een probleem.
Afhankelijkheden en plug-ins
Elke externe plug-in, elk script van een derde partij, is een potentieel risico. Vraag welke externe componenten worden gebruikt en of die actief worden bijgehouden. Een verlaten plug-in die al twee jaar geen updates heeft gehad, is een beveiligingsrisico dat je liever niet op je site hebt.
Bij Ictivity zie je hoe IT-security in de praktijk wordt opgebouwd als een gelaagd systeem, waarbij technische maatregelen en organisatorische afspraken elkaar aanvullen. Dat gelaagde denken is ook bij webontwikkeling de juiste aanpak: geen losse checks, maar een samenhangend geheel.
Hoe zorg je dat beveiliging onderdeel blijft na de oplevering?
Een beveiligingscheck bij oplevering is een goed begin, maar geen eindpunt. Websites veranderen, software krijgt updates, en nieuwe kwetsbaarheden worden voortdurend ontdekt. Beveiliging is geen project dat je afrondt, het is iets wat je onderhoudt.
Dat begint met duidelijke afspraken in het onderhoudscontract. Vraag expliciet wat er in het contract staat over beveiligingsupdates. Wie installeert updates voor het CMS en de plug-ins? Binnen welke termijn? Wie is verantwoordelijk als er een lek wordt ontdekt en de update niet is uitgerold?
Veel onderhoudscontracten zijn vaag op dit punt. Ze beloven “regulier onderhoud” zonder te specificeren wat dat betekent. Als opdrachtgever is het jouw taak om door te vragen totdat je concrete antwoorden hebt. Een leverancier die dat niet kan geven, geeft daarmee ook informatie.
Naast updates is het verstandig om periodiek een penetratietest te laten uitvoeren. Dat klinkt duur en ingewikkeld, maar voor een gemiddelde zakelijke website hoeft dat niet jaarlijks te zijn. Eens per twee jaar, of na een grote wijziging aan de site, is voor veel organisaties al een grote verbetering ten opzichte van nooit.
Een penetratietest simuleert een aanval op je website en brengt kwetsbaarheden in kaart voordat een echte aanvaller ze vindt. Het rapport dat je daarna krijgt, geeft je concrete punten om op te lossen. Dat is een stuk nuttiger dan achteraf schade herstellen.
Tot slot: zorg dat je als opdrachtgever altijd zelf toegang hebt tot de beheerpagina, de hostingomgeving en het domein. Klinkt vanzelfsprekend, maar in de praktijk zijn er genoeg situaties waarbij de klant afhankelijk is van de leverancier voor iets zo basaals als het resetten van een wachtwoord. Als de relatie met je leverancier stopt, moet jij nog steeds bij je eigen website kunnen.
Veelgestelde vragen over beveiligingschecks bij webontwikkeling
Moet ik als opdrachtgever zelf verstand hebben van IT-beveiliging?
Nee, maar je moet wel weten welke vragen je moet stellen. Je hoeft niet te begrijpen hoe SQL-injectie technisch werkt, maar je kunt wel vragen of de ontwikkelaar er rekening mee heeft gehouden en hoe. Een goede leverancier legt dat uit in begrijpelijke taal. Als je alleen maar jargon terugkrijgt zonder uitleg, is dat een signaal dat er iets niet klopt in de communicatie, of in de aanpak.
Wat kost een beveiligingscheck bij webontwikkeling?
Dat hangt af van de omvang van de site en wie de check uitvoert. Sommige bureaus nemen basiscontroles op als standaard onderdeel van hun offerte, andere rekenen er apart voor. Vraag bij het opvragen van offertes altijd expliciet welke beveiligingstests zijn inbegrepen en welke niet. Zo kun je aanbiedingen eerlijk vergelijken. Een goedkopere offerte die beveiliging weglaat, is op de lange termijn vaak de duurdere keuze.
Wat doe ik als mijn website al live is en nooit een beveiligingscheck heeft gehad?
Begin met de basis. Controleer of het SSL-certificaat geldig is, of het CMS en alle plug-ins up-to-date zijn, en of er een back-up bestaat die recent is. Dat zijn drie dingen die je vandaag nog kunt checken, ook zonder technische kennis. Als je daarna dieper wilt gaan, vraag dan een technisch audit aan bij een partij die onafhankelijk is van degene die de site heeft gebouwd. Die onafhankelijkheid zorgt voor een eerlijker beeld van de situatie.