Veiligheid en pentests in maatwerk software.
Hoe bouw je software die bestand is tegen aanvallen? Over penetratietests, OWASP Top 10 en waarom security geen afterthought mag zijn.
Wat is een pentest?
Een penetratietest — kort: pentest — is een gecontroleerde aanval op je software door een gespecialiseerde beveiligingsexpert. Het doel is kwetsbaarheden vinden voordat kwaadwillenden dat doen. De tester denkt en handelt als een aanvaller, maar rapporteert de bevindingen in plaats van ze te misbruiken.
Er zijn verschillende vormen. Bij een black box test heeft de tester geen voorkennis van het systeem en begint vanaf nul, zoals een echte aanvaller zou doen. Bij een white box test krijgt de tester toegang tot de broncode en architectuurdocumentatie. Een grey box test zit daar tussenin: beperkte informatie, zoals inloggegevens van een standaard gebruiker.
Een pentest is geen eenmalige formaliteit. Het is een essentieel onderdeel van een volwassen beveiligingsstrategie. Zeker voor applicaties die persoonsgegevens verwerken, financiële transacties afhandelen of bedrijfskritische processen ondersteunen, is periodiek testen onmisbaar.
Een pentest is geen examen waar je voor slaagt of zakt. Het is een röntgenfoto die laat zien waar je kwetsbaar bent; vóórdat iemand anders het ontdekt.
De OWASP Top 10: de meest voorkomende kwetsbaarheden
De OWASP Top 10 is de standaardlijst van de meest kritieke beveiligingsrisico’s voor webapplicaties. Elke pentest toetst hier minimaal op. Als ontwikkelaar moet je deze lijst kennen en actief verdedigen.
- Broken Access Control — Gebruikers krijgen toegang tot data of functies waarvoor ze geen rechten hebben. Denk aan het aanpassen van een URL-parameter om andermans gegevens te bekijken.
- Cryptographic Failures — Gevoelige data die onversleuteld wordt opgeslagen of verstuurd. Wachtwoorden in plaintext, ontbrekende HTTPS, zwakke hashing-algoritmes.
- Injection — SQL-injection, command injection, LDAP-injection. Ongevalideerde gebruikersinvoer die als commando wordt uitgevoerd.
- Insecure Design — Architectuurfouten die niet met een patch te fixen zijn. Security moet vanaf het ontwerp worden meegenomen.
- Security Misconfiguration — Standaard wachtwoorden, onnodige features ingeschakeld, verbose foutmeldingen in productie, ontbrekende security headers.
- Vulnerable Components — Verouderde libraries en dependencies met bekende kwetsbaarheden. Een enkele ongepatche dependency kan je hele applicatie openstellen.
- Authentication Failures — Zwakke wachtwoordvereisten, ontbrekende brute-force bescherming, onveilige sessie-afhandeling.
- Data Integrity Failures — Software-updates zonder integriteitscontrole, onbetrouwbare CI/CD-pipelines, onveilige deserialisatie.
- Logging & Monitoring Failures — Onvoldoende logging waardoor aanvallen niet gedetecteerd worden. Geen alerting bij verdacht gedrag.
- Server-Side Request Forgery (SSRF) — De applicatie wordt misbruikt om verzoeken naar interne systemen te sturen die niet publiek bereikbaar horen te zijn.
Deze lijst wordt regelmatig bijgewerkt door de OWASP-community en vormt de basis voor vrijwel elke professionele pentest.
Secure coding met Laravel
Laravel biedt als framework een solide basis voor veilige softwareontwikkeling. Maar een framework beschermt je alleen als je het correct gebruikt. Dit zijn de belangrijkste beveiligingsmechanismen die wij standaard inzetten:
CSRF-bescherming. Elke formulierinzending wordt beschermd met een CSRF-token. Dit voorkomt dat aanvallers namens een ingelogde gebruiker acties kunnen uitvoeren via een kwaadaardige website. Laravel dwingt dit standaard af op alle POST-, PUT-, PATCH- en DELETE-verzoeken.
SQL-injection preventie. Laravel beveiligt standaard alle database-verzoeken zodat gebruikersinvoer nooit ongecontroleerd in de database terechtkomt. Dit voorkomt een van de meest voorkomende aanvalstechnieken waarbij kwaadwillenden proberen om via invoervelden je database te manipuleren.
XSS-preventie. Alle gegevens die op de pagina worden weergegeven, worden standaard beveiligd zodat kwaadaardige scripts niet uitgevoerd kunnen worden. Dit is een van de meest voorkomende aanvalstechnieken op het web en Laravel beschermt hier standaard tegen.
Wachtwoord-hashing. Laravel gebruikt bcrypt of Argon2 voor het hashen van wachtwoorden. Plaintext wachtwoorden bestaan niet in een goed gebouwde Laravel-applicatie. Het framework maakt het makkelijker om het goed te doen dan om het fout te doen.
Rate limiting. Met Laravel’s ingebouwde rate limiting bescherm je login-endpoints en API’s tegen brute-force aanvallen. Configureerbaar per route, per gebruiker of per IP-adres.
Versleuteling. Laravel biedt ingebouwde encryptie voor het versleutelen van gevoelige data in de database. Velden met persoonlijke of vertrouwelijke informatie worden automatisch versleuteld opgeslagen en alleen ontsleuteld wanneer je applicatie ze nodig heeft.
Beveiligingsinstellingen voor browsers. We configureren beveiligingsmaatregelen die browsers vertellen hoe ze de applicatie veilig moeten behandelen. Deze instellingen blokkeren veel gangbare aanvalstechnieken, zoals het laden van ongewenste scripts of het insluiten van je applicatie in een andere website.
Beveiliging is geen feature die je toevoegt aan het einde van een project. Het is een fundament dat je vanaf dag één legt.
Security als onderdeel van het ontwikkelproces
Bij Coding Agency is beveiliging geen stap die aan het einde van een project wordt toegevoegd. Het is verweven in elke fase van het ontwikkelproces.
Ontwerp. Al bij het architectuurontwerp brengen we beveiligingsrisico’s in kaart. Welke data is gevoelig? Wie mag wat zien? Waar zitten de aanvalsoppervlakken? Door hier vroeg over na te denken, voorkomen we structurele kwetsbaarheden die later duur zijn om op te lossen.
Development. Tijdens het bouwen houden we ons aan secure coding practices. Code reviews bevatten altijd een beveiligingscheck: wordt input gevalideerd? Zijn autorisatiechecks aanwezig? Worden gevoelige data correct afgeschermd? Automated security tooling scant de codebase op bekende kwetsbaarheden in dependencies.
Testing. Naast functionele tests schrijven we security-gerichte tests. Kan een gebruiker met role A data van role B benaderen? Worden rate limits correct afgedwongen? Wordt gevoelige data geëxcludeerd uit API-responses?
Live-gang. Productieomgevingen worden extra beveiligd: geen technische foutmeldingen zichtbaar voor bezoekers, wachtwoorden en toegangsgegevens veilig opgeslagen op een beschermde plek, en alle verbindingen versleuteld. We gebruiken infrastructuur op AWS via Laravel Vapor, met automatische beveiligingsupdates en versleutelde opslag.
Na oplevering. Software is nooit af. Dependencies worden bijgehouden en gepatcht. Beveiligingsadviezen worden gemonitord. En periodieke pentests valideren dat de applicatie bestand blijft tegen nieuwe aanvalstechnieken.
Pentests positief doorstaan
Het resultaat van deze aanpak spreekt voor zich: meerdere software applicaties van Coding Agency hebben professionele penetratietests positief doorstaan. Dat betekent niet dat er nul bevindingen waren — een pentest levert vrijwel altijd aanbevelingen op — maar dat er geen kritieke of hoge kwetsbaarheden zijn aangetroffen die de applicatie of de data van gebruikers in gevaar brengen.
Dit is geen toeval. Het is het directe gevolg van het consistent toepassen van secure coding practices, het gebruik van een framework dat security serieus neemt, en een ontwikkelproces waarin beveiliging geen afterthought is maar een eerste vereiste.
Een pentest is voor ons geen spannend examen maar een bevestiging van hoe we werken. De bevindingen die er zijn — en die zijn er altijd — gebruiken we om onze standaarden verder aan te scherpen. Elke pentest maakt onze volgende applicatie beter.
Wil je weten hoe wij de veiligheid van jouw applicatie kunnen waarborgen? Neem contact op voor een vrijblijvend gesprek over security in maatwerk software.
/Gerelateerde artikelen
AVG / GDPR voor webapplicaties
De technische vereisten voor AVG-compliance in je webapplicatie.
Technische schuld
Wat het is, hoe het ontstaat en hoe je voorkomt dat het je product vertraagt.
Waarom Laravel?
Waarom wij kiezen voor Laravel als basis voor maatwerk software.