Wat is veilige code? – De basis van softwarebeveiliging

22 april 2025

l

Yilmaz Tamer

Stel je voor:

Je bouwt een simpele app. Bijvoorbeeld eentje waarmee je klasgenoten kunnen inloggen om hun cijfers te bekijken. Alles lijkt te werken. Totdat je merkt… dat je óók de cijfers, namen en e-mailadressen van anderen kunt zien.
Oei. Niet helemaal de bedoeling, toch?

Als je software maakt, wil je dat het goed werkt. Maar het moet ook veilig zijn, de privacy van gebruikers respecteren, en eerlijk zijn tegenover iedereen die het gebruikt. In deze blog lees je wat veilige code is, waarom het belangrijk is, en hoe jij daar als beginnende developer nu al slimme keuzes in kunt maken. Daarbij houden we steeds drie principes in het oog: security, privacy en ethiek.

1. Waarom veilige code belangrijk is

Misschien denk je: “Mijn app is nog klein, wat kan er nou misgaan?”
Maar juist nu kun je al leren hoe je dingen slim en veilig opzet. Als je geen rekening houdt met veiligheid, kunnen er dit soort dingen gebeuren:

❌ Onveilige code – dit moet je NIET doen
Stel: je maakt een console-applicatie waarin leerlingen hun cijfers kunnen opvragen. Maar door een fout in de code krijgt iedereen ineens álle cijfers te zien.

static void CijfersOpvragen()
{
    Console.Write("Voer jouw naam in: ");
    string naam = Console.ReadLine();
    
    // ❌ Privacyfout: alle leerlingen en cijfers worden getoond

    foreach (var leerling in leerlingenCijfers)
    {

        Console.WriteLine($"Leerling: {leerling.Key}");
        Console.WriteLine("Cijfers: " + string.Join(", ", leerling.Value));
    }
}

Uitleg: Deze code controleert niet wie er om informatie vraagt, en toont dus alles. Dat is een klassiek voorbeeld van een privacyprobleem.

  • Iedereen kan gegevens van anderen zien (privacyprobleem)
  • Iemand voert vreemde tekens in en veroorzaakt een fout (securityprobleem)
  • Je bewaart wachtwoorden open en bloot in je code (ethisch probleem), bijvoorbeeld in een bestand dat je per ongeluk online zet

Daarom is het goed om jezelf bij elke stap af te vragen: “Wat als iemand dit expres verkeerd gebruikt?”
Dat is al ethisch denken: je kijkt niet alleen of iets werkt, maar denkt ook na over wat de gevolgen kunnen zijn voor anderen.

✅ Veilige code – toon alleen wat nodig is

static void CijfersOpvragen()
{
    Console.Write("Voer jouw naam in: ");
    string naam = Console.ReadLine();

    if (leerlingenCijfers.ContainsKey(naam))
    {
        Console.WriteLine($"Cijfers voor {naam}:");
        Console.WriteLine(string.Join(", ", leerlingenCijfers[naam]));
    }
    else
    {
        Console.WriteLine("Geen cijfers gevonden voor deze naam.");
    }
}

Uitleg: De gebruiker ziet alleen zijn of haar eigen cijfers. Dat is privacy vriendelijk en voorkomt datalekken.

2. Invoervelden controleren – kleine moeite, groot verschil

Een van de eenvoudigste én meest effectieve manieren om je applicatie veiliger te maken, is het controleren van gebruikersinvoer. Waarom? Omdat ongecontroleerde invoer een open deur is naar fouten, datalekken en zelfs cyberaanvallen.

Wat bedoelen we met ‘invoer controleren’?
Stel: je maakt een formulier waarin mensen hun naam, leeftijd en e-mailadres moeten invullen. Dan wil je zeker weten dat ze geen onzin invullen, zoals:

Een naam? Geen cijfers of vreemde tekens
Een leeftijd? Alleen echte getallen
Een e-mailadres? Lijkt het op een geldig adres?

Waarom is invoercontrole belangrijk?
Ongecontroleerde invoervelden kunnen misbruikt worden om ongewenste data je systeem binnen te krijgen. Zonder invoercontrole vergroot je het risico op fouten of beveiligingsproblemen.

AspectWat levert het op?
SecurityJe voorkomt dat schadelijke data je systeem binnendringt (bijv. via SQL-injecties).
PrivacyJe zorgt ervoor dat persoonlijke data correct en veilig verwerkt wordt.
EthiekJe zorgt dat je systeem niet makkelijk misbruikt kan worden, wel zo eerlijk.

Hoe controleer je invoer op een slimme manier?
Je kunt invoer handmatig controleren met simpele regels, maar gelukkig zijn er ook handige hulpmiddelen die dit proces makkelijker én veiliger maken.

Regex (afkorting van “regular expression”) is een manier om tekst te controleren op een bepaald patroon. Bijvoorbeeld: bevat een e-mailadres een @-teken en een domeinnaam?
Regex helpt bij het herkennen van dit soort patronen.

Validator: Een validator is een stukje code of een bibliotheek die automatisch controleert of de invoer geldig is volgens de regels die jij instelt. Denk aan verplichte velden, het juiste datatype of maximale lengte.
Voorbeelden van validators:

3. Foutmeldingen – wat je beter niet kunt laten zien

Stel: iemand vult iets verkeerd in en krijgt dit te zien:
“Fout in regel 42 van login.php: Databaseverbinding mislukt met gebruikersnaam root en wachtwoord ‘admin123’.”

Dat is gevoelige informatie die niet bedoeld is voor de gebruiker – en zeker niet voor iemand met slechte bedoelingen.

Laat nooit technische informatie zien aan gebruikers
Toon geen foutregels, padnamen of wachtwoorden
Toon een simpele melding: “Er is iets misgegaan. Probeer het opnieuw.”
Log de technische fout op de achtergrond, alleen zichtbaar voor jou of je team

Zo houd je je systeem veilig (security) en respecteer je de gebruiker (ethiek).

4. Wachtwoorden veilig opslaan

Sommige (slechte) websites bewaren wachtwoorden zo:
Gebruiker: Ylmz123
Wachtwoord: welkom2025

Als iemand dat bestand te pakken krijgt, kan diegene meteen inloggen. Niet veilig dus!

Wat moet je doen?

Hashen: Hashing betekent dat je een wachtwoord omzet in een reeks willekeurige tekens (hash) die je niet zomaar kunt terugrekenen. Zo sla je wachtwoorden veilig op. Gebruik bijvoorbeeld bcrypt of Argon2.
Salting: Bij salting voeg je extra willekeurige tekens toe aan het wachtwoord vóór je het gaat hashen. Daardoor zien twee identieke wachtwoorden er toch verschillend uit. Dit maakt het moeilijker om hashes te raden of terug te rekenen.
2FA (Two-Factor Authentication): Dit betekent dat gebruikers niet alleen met een wachtwoord inloggen, maar ook met een extra controle (bijv. een code via een app). Dit maakt toegang tot je systeem veel veiliger.

Voorbeelden van veilige 2FA-apps zijn Google Authenticator of Authy.

Security: Je beschermt accounts tegen misbruik
Privacy: Je zorgt dat gebruikersgegevens veilig blijven opgeslagen
Ethiek: Je laat zien dat je bewust omgaat met gevoelige data

5. Eerlijk programmeren – jouw rol als developer

Stel: je werkt in een team en je ziet een beveiligingsprobleem. Iemand zegt:
“Laat maar zitten, dat lossen we later wel op.”

Wat doe jij dan?
Jij hebt een verantwoordelijkheid. Je schrijft niet alleen code, je beschermt ook de mensen die jouw software gebruiken.

Stel jezelf deze vragen:

  • Moet ik dit melden?
  • Wat gebeurt er als ik het negeer?
  • Wil ik een developer zijn die bewust en eerlijk werkt?

Door het toch te melden, of door serieus te zijn tijdens een code review, maak jij al verschil. Voor je team, je gebruikers – en voor jezelf.

Kleine acties, groot effect. Dat is eerlijk programmeren (ethiek).

6. Samen sterk: waarom code reviews goud waard zijn

Ook als jij veilig programmeert, zie je niet altijd alles. Daarom zijn code reviews zo belangrijk: je laat iemand anders meekijken vóórdat je code live gaat.

  • Frisse blik: Een ander ziet dingen die jij mist
  • Samen leren: Je leert van elkaars aanpak
  • Veiliger resultaat: De software wordt sterker en betrouwbaarder

Tip: Zie een code review niet als kritiek, maar als een kans om beter te worden. Dat maakt je niet alleen een betere developer, maar ook een bewustere.

7. Aan de slag: reflecteer op je eigen code

Je hebt nu gelezen wat veilige code is, waarom het belangrijk is, en hoe je er als developer mee aan de slag kunt. Maar de echte stap begint bij jezelf.

🔍 Mini-opdracht – Check jouw code

Kijk naar een stuk code dat je eerder hebt geschreven. Misschien een oefenproject, een schoolopdracht of een stukje login-functionaliteit.

Beantwoord voor jezelf deze vragen:

  • Heb ik ergens invoer gecontroleerd? Zo ja, hoe heb ik dat gedaan?
  • Wat zou er gebeuren als iemand expres verkeerde gegevens invult?
  • Kan ik de veiligheid, privacy of ethiek van mijn code verbeteren?
  • Welke hulpmiddelen zoals validators of regex zou ik hiervoor kunnen gebruiken?

💡 Door op deze manier naar je eigen werk te kijken, ontdek je waar je al goed bezig bent – en waar je nog kunt groeien. Veilig programmeren begint bij kleine keuzes. Die kun jij vandaag al maken.

Mijn visie :

“Als ontwikkelaar zie ik veilige code niet langer als een luxe, maar als een morele plicht. We bouwen applicaties die door miljoenen mensen worden gebruikt en vertrouwen krijgen we alleen door die verantwoordelijkheid serieus te nemen. In mijn ogen moet veilige codering net zo vanzelfsprekend worden als het testen van functionaliteit. Want wat heb je aan een werkende app als deze een open deur is voor misbruik?

Ik denk dat we als developers te lang hebben gedacht in termen van ‘features’ in plaats van ‘gevolgen’. Daarom pleit ik ervoor dat security-onderwijs niet optioneel is, maar een vast onderdeel van elke programmeeropleiding. We moeten onze kennis niet alleen toepassen, maar ook uitdragen – binnen teams, richting opdrachtgevers én gebruikers.”

Hoe kijk jij hiernaar als (beginnende) developer? Ben jij al bewust bezig met de ethische impact van jouw code?

Geschreven door Yilmaz Tamer

Comments

19 Reacties

  1. Ilyas

    Alles is wel overzichtelijk alleen ik zou het stukje met “Hashen, salting en 2FA” wat duidelijker maken met wat meer wit regels.

    Antwoord
  2. Bjorn Kuiper

    Makkelijk te lezen. Leer hier wel wat van. Bij het filmpje hoor je niet iemand anders gegevens te geven.

    Antwoord
  3. Furkan

    Ik vind dat het een goeie opmaak is veel verteld over privacy etiek en security dus genoeg informatie en een goed voorbeeld!

    Antwoord
  4. Avsar Koktas

    Ik vond het fijn dat er geen onnodige informatie werd gegeven om de blog op te vullen

    Antwoord
  5. Marc

    Makkelijk te lezen en goed uitgelegd

    Antwoord
  6. Sarukan

    Er is een link in de header en apart. Het zou fijner zijn om ze ergens samen te hebben of een menutje te hebben.

    Antwoord
  7. Rick Geerdink

    er staat twee keer dit in maar met andere teksten er achter ik raak daardoor verwart

    Security: Je voorkomt dat er foute of gevaarlijke data binnenkomt
    Privacy: Je beschermt persoonlijke informatie
    Ethiek: Je zorgt dat je systeem niet makkelijk misbruikt kan worden

    maar voor de rest is het een duidelijke en goed gemaakte website

    Antwoord
  8. ᅠ

    website ziet er echt mooi uit, en is heel makkelijk om te lezen. het is ook best wel leerzam. wat verbeterd kan worden is de regelafstand en misschien paar links naar een youtube video, die kunnen helpen om je verder in het onderwerp te verdiepen.

    Antwoord
  9. Bart

    De blog leest fijn: stelt vragen en geeft kort en duidelijk uitleg met gebruik van termen die weer uitgelegd worden dus je blijft geïnteresseerd omdat er steeds nieuwe dingen getoond worden. Ook worden er geen details geskipt ook al zijn ze logisch. Ik vindt het ook wel goed dat de blog begint met een verhaaltje en een programmatje en dat daar dan naar gaat kijken en de onderwerpen van de blog aan kaart.

    Antwoord
  10. Noah Roozeboom

    Mooie website met goede uitleg snap nu meer over hoe dit werkt

    Antwoord
  11. Natalie

    Ik vind zelf dat de blog een mooie gestructureerde ontwerp heeft en alles is duidelijk.

    Antwoord
  12. Wiebe

    ik vind dat er wel wat meer visuele uitleg bij mag, maar voor de rest vind ik hem wel prima

    Antwoord
  13. Ronnie Wiggers

    ik zie dat de design van sommige dingen niet heel perfect is.
    want. je ziet de imperfecties in de design iets staat er niet op de juiste plek of iets hoort er niet te zijn of de design is niet recht gedaan.

    Antwoord
  14. Emily

    Blog ziet er simpel, strak en netjes uit. Ik zou terug komen als er een nieuwe/andere blog uit zou komen.

    Antwoord
  15. Maks

    kon meer uitgelegd worden en minder witregels. Voor de rest is het wel netjes.

    Antwoord
  16. Serdar

    Deze blog legt op een duidelijke manier uit wat veilige code is en waarom dat zo belangrijk is, vooral voor mensen die net beginnen met programmeren. De voorbeelden zijn herkenbaar en goed gekozen, en de uitleg over dingen als invoer controleren, foutmeldingen en wachtwoorden opslaan is makkelijk te volgen.

    Wat kan nog beter:

    Er staan een paar kleine taalfoutjes in, zoals spelfouten of Engelse woorden waar een Nederlands woord beter past.

    Probeer wat consequenter te zijn in het gebruik van hoofdletters en termen als “security”, “privacy” en “ethiek”.

    Verder is dit een leerzame en nuttige blog die laat zien dat goed programmeren ook betekent dat je eerlijk en zorgvuldig met gegevens omgaat.

    Antwoord
    • Yilmaz Tamer

      Dank voor je reactie via Chat GPT 😉

      Antwoord
  17. Cavo

    De tekst ziet er overzichtbaar uit, Ik had alleen de Voorbeelden van validators een soort van button gegeven dat als je erop zou klikken dat je misschien naar een tekst doorgestuurd wordt voor meer uitleg. Verder goede blog!

    Antwoord
  18. Stijn H.

    Bij punt 6 wordt er gezegd dat het goed is om een andere developer of programmeur naar je code te laten kijken zodat je een frisse blik is. Ik vind het raar dat deze bij een blog over veilige code wordt inbegrepen, aangezien slordig gegevens opslaan in je code ervoor kan zorgen dat een andere developer informatie te zien krijg waar hij eigenlijk niet bij moet/hoort te komen.
    Voor de rest ziet de blog er goed uit, de afbeeldingen en video versterken het verhaal op bepaalde momenten.

    Antwoord

Een reactie versturen

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *