Tech Insights

Laravel Data Security: Open Source encryptie voor gevoelige data

In elke Laravel applicatie zitten gevoelige gegevens. Telefoonnummers, adressen, sociale verzekeringsnummers, medische informatie. De vraag is niet of je deze data moet beveiligen, maar hoe je dit op een manier doet die ontwikkelaars niet overweldigt.

Auteur: Bob Kosse
Tags:
Privacy
Laravel
Data Beveiliging
Open Source
Leestijd: 4 minuten

Vanuit de gedachte dat data beveiliging niet complext moet zijn, ben ik gestart met het Laravel Data Security package: een open source package die encryptie van gevoelige data in Eloquent modellen zo eenvoudig mogelijk maakt.

Het probleem

GDPR en AVG vereisen dat je persoonlijke data beschermt. Maar in de praktijk zien we vaak:

  • Gevoelige data in plaintext in de database
  • Developers die vergeten data te versleutelen bij bulk-updates
  • Geen overzicht welke modellen gevoelige data bevatten
  • Onmogelijk om te auditen wie welke data heeft ingezien
  • Bestaande oplossingen zijn vaak te complex, te duur, of te specifiek voor één use-case.

Wat Laravel Data Security nu al kan

🔐 Automatische encryptie

Voeg de HasPrivacy trait toe aan je model en definieer welke velden gevoelig zijn. De package zorgt ervoor dat deze data automatisch wordt versleuteld voordat deze data de database bereikt.

use BobKosse\LaravelDataSecurity\Traits\HasPrivacy;
use Illuminate\Database\Eloquent\Model;

class PatientProfile extends Model
{
use HasPrivacy;

    protected $privacyFields = [
        'phone_number',
        'address',
        'social_security_number'
    ];
}

🎭 Privacy masking

Standaard worden gevoelige velden gemaskeerd als [ENCRYPTED]. Dit voorkomt dat data per ongeluk lekt in logs, API-responses of views. Hierdoor kun je dus ook op gebruikersniveau toegang tot gevoelige data beperken.

$profile = PatientProfile::find(1);

// Retourneert "[ENCRYPTED]"
echo $profile->phone_number;

// Alleen met expliciete toestemming
$profile->revealPrivacy(true);
echo $profile->phone_number; // Retourneert het echte nummer

🔍 Audit Command

Met de ingebouwde CLI-commando krijg je direct inzicht in welke modellen gevoelige data bevatten en welke niet.

php artisan privacy:audit app/Models

Dit geeft een overzicht van alle Eloquent models in je applicatie, inclusief welke velden versleuteld zijn.

🛡️ User model protection

De package bevat een ingebouwde safety check die voorkomt dat het standaard User model per ongeluk wordt versleuteld. Dit voorkomt dat gebruikers hun eigen accounts niet meer kunnen inloggen. Belangrijk is dus om geen gevoelige informatie op te slaan in het User model. Als je bijvoorbeeld een applicatie ontwikkeld met medische informatie, dan is het niet aanbevolen om deze data niet in de User model op te slaan, maar in een apart model waarbij je de HasPrivacy trait toevoegt.

Roadmap: waar gaan we naartoe?

Dit is slechts het begin. Hier is wat ik voor de komende maanden gepland heb:

Korte termijn (Q2 2026)

Feature Status
Toevoegen bulk-update encryptie 🚧 In ontwikkeling
Database column size validation ⏳ Planningsfase
Uitgebreide documentatie ⏳ Planningsfase

Middellange termijn (Q3-Q4 2026)

Feature Status
Policy-based data ontsluiting 💭 Idee
Key rotation ondersteuning 💭 Idee
Custom masking templates 💭 Idee
CI/CD integratie voor compliance checks 💭 Idee

Lange termijn (2027+)

Feature Status
Real-time compliance dashboard 💭 Idee
Externe KMS integratie (AWS KMS, Vault) 💭 Idee
Audit trail logging 💭 Idee
Pseudonymisation voor testdata 💭 Idee

Dit is Open Source, dus jij kunt bijdragen!

Laravel Data Security is volledig open source. Dit betekent:

  • Geen lock-in: Je kunt de code inspecteren, modificeren en aanpassen
  • Community-driven: Issues, PR's en feedback zijn welkom
  • Transparant: Geen verborgen features, geen "PRO-only" logica
  • Gratis: Geen licentiekosten, geen abonnementskosten

Hoe kun je bijdragen?

  1. Issues melden: Heb je een bug gevonden? Open een issue op GitHub.
  2. Pull Requests: Heb je een verbetering? Fork de repo en stuur een PR.
  3. Documentatie: Help de docs verbeteren of vertaal naar andere talen.
  4. Tests: Schrijf tests voor edge cases die ik misschien heb gemist.
  5. Feedback: Wat mist er? Wat werkt niet goed? Laat het weten.

Installatie

Installatie is eenvoudig via Composer:

composer require bobkosse/laravel-data-security

Daarna de trait toevoegen aan je modellen, aangeven welke velden je wilt encrypten, en je bent klaar!

Links

Tot Slot

Dit project is mijn manier om iets terug te geven aan de Laravel community. Data beveiliging is te belangrijk om over te laten aan dure enterprise-oplossingen die niet voor iedereen toegankelijk zijn.

Als je dit package gebruikt, een ster geeft, of bijdraagt aan de ontwikkeling, dan is dat geweldig. Maar vooral: gebruik het, test het, en vertel me wat er beter kan.

Laravel Data Security is er voor jou en door jou!

Heb je vragen of opmerkingen? Open een issue op GitHub of stuur een e-mail aan bob@bobkosse.nl.