SECURITY & TRUST

Beveiliging begint bij wat een gebruiker níet mag kunnen.

Security-by-design betekent dat authenticatie, rollen, data-isolatie, audit, secrets, sessies en deploymentgrenzen al tijdens het ontwerp worden meegenomen. Het doel is niet “security” als marketinglabel, maar aantoonbaar kleinere bevoegdheden, minder blootstelling en een begrijpelijk herstelpad wanneer iets misgaat.

PHPQavirio contact security
function qavirio_process_contact_submission(
    $source, $nonce_field, $nonce_action
) {
    if ($_SERVER['REQUEST_METHOD'] !== 'POST'
        || empty($_POST[$nonce_field])) {
        return ['sent' => false, 'error' => false];
    }

    if (!wp_verify_nonce(
        sanitize_text_field(wp_unslash($_POST[$nonce_field])),
        $nonce_action
    )) {
        return ['sent' => false, 'error' => true];
    }

    $name = sanitize_text_field(
        wp_unslash($_POST['qv_name'] ?? '')
    );
    $email = sanitize_email(
        wp_unslash($_POST['qv_email'] ?? '')
    );

    if (!$name || !is_email($email)) {
        return ['sent' => false, 'error' => true];
    }
}
SECURITY-BY-DESIGN

Vier uitgangspunten die concrete technische gevolgen hebben.

De invulling hangt af van risico en context. Een publieke marketingwebsite vraagt iets anders dan een platform met persoonsgegevens. Maar dezelfde discipline blijft gelden: autoriteit beperken, data minimaliseren, relevante gebeurtenissen kunnen reconstrueren en bij twijfel veilig falen.

Sterke toegang

Authenticatie, sessieduur, RBAC en least privilege worden afgestemd op rol en risico.

Minimale data

Alleen gegevens verwerken en lokaal bewaren die nodig zijn voor de functie, met duidelijke grenzen rond opslag en toegang.

Traceerbaarheid

Belangrijke acties en wijzigingen controleerbaar maken zonder gevoelige inhoud onnodig te dupliceren in logs.

Fail closed

Bij onduidelijkheid, verlopen toegang of ongeldige state geen stilzwijgende extra autoriteit geven.

IDENTITY & ACCESS

Een ingelogde gebruiker is nog geen geautoriseerde gebruiker.

Authenticatie beantwoordt wie iemand is of welk account wordt gebruikt. Autorisatie beantwoordt daarna een andere vraag: welke actie mag deze identiteit in deze context uitvoeren? Die scheiding is essentieel in systemen met verschillende rollen, gevoelige dossiers of beheertaken.

Daarom proberen we rechten niet alleen in navigatie of zichtbaarheid te verstoppen. Een knop niet tonen is geen beveiliging. De serverzijde of applicatielaag moet de bevoegdheid opnieuw afdwingen. Voor mobiele toegang of gevoelige contexten kunnen kortere sessies, herauthenticatie en remote revocation relevant zijn.

AUTHN

Wie ben je?

Sterke login en sessiebeleid passend bij risico en gebruikssituatie.

AUTHZ

Wat mag je hier?

RBAC en contextcontroles beperken acties tot expliciet toegekende bevoegdheden.

REVOKE

Toegang moet ook kunnen eindigen

Sessies of apparaten moeten bij verlies, functiewijziging of incident kunnen worden ingetrokken waar de context dat vraagt.

DATA-GRENZEN

Niet alles wat technisch bereikbaar is, hoort beschikbaar te zijn.

Dataminimalisatie gaat niet alleen over minder velden verzamelen. Het gaat ook over welke rol welke subset nodig heeft, welke informatie lokaal op een apparaat mag blijven, hoe lang gegevens relevant zijn en of dezelfde informatie in logs, exports of caches onnodig wordt gedupliceerd.

Bij multi-tenant of sectorspecifieke software moet een grens tussen organisaties of dossiers technisch afdwingbaar zijn. Een query, API of achtergrondtaak mag niet stilzwijgend buiten de bedoelde context kijken. Daarom horen context, ownership en permissions bij het datamodel en de applicatielaag.

MINIMUM

Alleen wat de taak nodig heeft

UI, API en opslag worden beperkt tot relevante informatie.

CONTEXT

Grenzen tussen dossiers of tenants

Context hoort in queries, services en autorisatie terug te komen.

LIFECYCLE

Bewaren met een reden

Retentie en verwijdering worden afgestemd op doel, verplichting en productcontext.

SECRETS, TRANSPORT & CONFIGURATIE

Credentials horen niet in broncode. Vertrouwelijke data hoort niet onnodig over onbeveiligde grenzen.

Applicatiecode en omgevingsconfiguratie worden waar mogelijk gescheiden. API-keys, wachtwoorden en tokens horen in geschikte secret/configuratievoorzieningen en mogen niet in repository, publiek JavaScript of screenshots belanden. Transport tussen browser, applicatie en externe diensten hoort via TLS wanneer vertrouwelijkheid of integriteit dat vereist.

Ook dependencies en platformversies horen bij securityhygiëne. Updates worden niet blind geïnstalleerd, maar bekende kwetsbaarheden of verouderde componenten kunnen evenmin onbeperkt blijven liggen. De juiste balans is gecontroleerd patchen met regressiecontrole.

SECRETS

Buiten publieke code

Geen credentials in templates, repositories of client-side bundles.

TLS

Bescherm transport

HTTPS/TLS voor productiecommunicatie waar vertrouwelijkheid of integriteit relevant is.

PATCH

Gecontroleerd bijwerken

Security-updates combineren met compatibiliteits- en regressiecontrole.

AUDIT & OBSERVABILITY

Log wat nodig is om gedrag te reconstrueren — niet alles wat je kunt verzamelen.

Audit logging is het meest waardevol wanneer duidelijk is welke gebeurtenissen belangrijk zijn: login, privilegewijziging, statusovergang, kritieke write, export, configuratiewijziging of deployment. Een bruikbaar auditspoor vertelt wie of welk systeem iets deed, wanneer, in welke context en met welk resultaat.

Tegelijk kan een log zelf gevoelig worden. Daarom vermijden we waar mogelijk volledige documenten, tokens, wachtwoorden of overbodige persoonsgegevens in logs. Observability moet genoeg context geven om incidenten en fouten te begrijpen zonder een tweede ongecontroleerde databron te creëren.

WHO / WHAT

Actor en actie

De relevante identiteit of service en de uitgevoerde actie.

CONTEXT

Waar en onder welke scope

Tenant, dossier, workflow of systeemcontext waar relevant.

RESULT

Uitkomst zichtbaar

Succes, weigering of foutstatus zodat gedrag achteraf verklaarbaar blijft.

FAIL CLOSED & RECOVERY

Een fout mag niet automatisch meer bevoegdheid opleveren.

Wanneer authenticatie, policy, integratie of configuratie onzeker is, kiezen kritieke functies waar passend voor een veilige weigering in plaats van “best effort” doorgaan. Een timeout naar een externe service mag bijvoorbeeld niet stilzwijgend worden geïnterpreteerd als toestemming. Een verlopen sessie mag geen verborgen bypass krijgen omdat dat gebruiksvriendelijker lijkt.

Security omvat ook herstel: account of apparaat intrekken, configuratie corrigeren, service terugrollen, backup herstellen, incident reconstrueren en daarna controleren of dezelfde oorzaak opnieuw kan optreden. Beschikbaarheid en security raken elkaar hier direct.

  • Onzekere autorisatie → weigeren, niet gokken.
  • Incident → toegang kunnen intrekken en toestand herstellen.
  • Herstel → oorzaak en regressie opnieuw controleren.
Assurance & certificering →
Geen absolute securityclaim. Wel concrete beheersmaatregelen.

Security is een continu proces van begrenzen, controleren, patchen, testen en herstellen. Formele assurance of certificering noemen we alleen wanneer die daadwerkelijk bestaat.

VOLGENDE STAP

Wat moet digitaal beter werken?

Beschrijf het probleem. Wij kijken eerst naar doel, gebruiker en proces — daarna pas naar technologie.

Contact →