Excel-bestanden beveiligen: hoe werkt dat écht?
Inleiding
Excel biedt allerlei manieren om je werkbladen te beveiligen, zoals het instellen van wachtwoorden voor een blad of voor de hele werkmap. Maar hoe werkt dat eigenlijk technisch? Waar wordt die beveiliging opgeslagen? En hoe veilig is het eigenlijk?
In deze blog laat ik stap voor stap zien wat Excel doet met je bestand wanneer je beveiliging toepast. We kijken onder de motorkap in de XML-bestanden die in elke .xlsx
-file verstopt zitten.
Voorbereiding: een Excel-bestand ontleden
Wist je dat een .xlsx
-bestand eigenlijk gewoon een .zip
-bestand is? Je kunt het gewoon uitpakken met bijvoorbeeld 7-Zip. Daarna zie je een mapstructuur met allerlei .xml
-bestanden.
Stappen:
- Download of maak een nieuw
.xlsx
-bestand. - Pak het bestand uit in een map.
- Open Visual Studio Code in die map.
- Initialiseer een Git-repository:
- Open het Source Control paneel (via de linkerzijbalk of
Ctrl+Shift+G
). - Klik op Initialize Repository.
- Klik op het plusteken om alle bestanden toe te voegen aan de staging area.
- Voer een commit uit met de boodschap “Oorspronkelijk bestand zonder beveiliging” via de commit-balk bovenaan het paneel.
- Open het Source Control paneel (via de linkerzijbalk of
- Format de XML-bestanden netjes met Visual Studio Code (bijvoorbeeld via de extensie XML Tools of standaard formattering) zodat alles niet op één regel staat.
- Commit deze geformatteerde versie via het Source Control paneel met de boodschap “XML geformatteerd”.
Stap 1: Bladbeveiliging toevoegen
In Excel:
- Ga naar Controleren > Blad beveiligen, geef een wachtwoord op en vink de gewenste opties aan.
- Sla het bestand daarna op.
- Pak het bestand opnieuw uit en open het in Visual Studio Code.
- Formatteer opnieuw de XML-bestanden.
Bekijk in VS Code het verschil met de vorige commit:
- Open het Source Control paneel.
- Klik op Changes om de gewijzigde bestanden te zien.
- Klik op een bestand om het diff-venster te openen.
Je ziet dat Excel een nieuw XML-element toevoegt in het werkbladbestand:
1<sheetProtection algorithmName="SHA-512"
2 hashValue="yxqKWWc/6BeXim+XrW5J25z9N5+ZPJKik3FXHtaDhSStpHDR9HJrp5YW7e6sB8cDMsrzd7kyjFQbTZ5mJhBUaQ=="
3 saltValue="Hw+0hLEqDmi56yccS8HOQg==" spinCount="100000" sheet="1" objects="1" scenarios="1" />
Dit element schakelt gebruikersopties uit (zoals cellen wijzigen), maar:
Let op: Als je dit
<sheetProtection>
-element verwijdert en het bestand weer inpakt als.xlsx
, is de bescherming weg, zonder dat je het wachtwoord nodig hebt.
Stap 2: Werkmapstructuur beveiligen
In Excel:
- Ga naar Controleren > Werkmap beveiligen en geef een wachtwoord op.
- Sla opnieuw op.
Pak het bestand weer uit en open xl/workbook.xml
in Visual Studio Code. Kijk in het Source Control paneel naar het verschil ten opzichte van de vorige versie.
Je ziet een nieuwe regel:
1<workbookProtection workbookAlgorithmName="SHA-512"
2 workbookHashValue="XgpMqfbntUXt8SjBvOzWiGepTMISGRcUCW1c97pkKMNyGjRq90Oi4+Mp1Y2/gLPnOXZDwm3ze3BKH8rlkwRDNQ=="
3 workbookSaltValue="ETATsHUo/za6YRqMapGY6g==" workbookSpinCount="100000" lockStructure="1" />
Ook deze regel kun je eenvoudig verwijderen om de beveiliging ongedaan te maken.
Stap 3: Alleen-lezen aanbevelen via “Bestand > Opslaan als”
In Excel:
- Kies Opslaan als.
- Klik op Extra > Algemene opties…
- Vink aan: “Alleen-lezen aanbevolen” of geef een wachtwoord voor wijzigen op.
- Sla op.
In xl/workbook.xml
verschijnt nu een <fileSharing>
-element:
1<fileSharing readOnlyRecommended="1" userName="JohnDoe" algorithmName="SHA-512"
2 hashValue="TL56IPcYRunbNaEpQdA5USSFsL1L55b+sevsgYsG3UrTLmqWR26imw+phAWEFnh9Dw79Y7DiVQu4bQFO25YuSQ=="
3 saltValue="gCFZPEnnPtXmEbZUyaOfiQ==" spinCount="100000" />
Ook deze vorm van beveiliging is alleen een hint voor de gebruiker. De inhoud van het bestand blijft toegankelijk en is niet versleuteld.
Hoe veilig is dit eigenlijk?
Alle drie de vormen van “beveiliging” die we hierboven gezien hebben sheetProtection
, workbookProtection
en fileSharing
werken op basis van eenvoudige XML-regels die je gewoon kunt verwijderen. De wachtwoorden zijn wel gehasht, maar je hoeft ze niet eens te kraken: het verwijderen van de juiste XML-tag is voldoende om de beveiliging uit te schakelen.
Het doel van deze beveiliging is dan ook gebruikersinterfacebeperking, niet echte databeveiliging.
Samenvattende vergelijking
Type beveiliging | XML-bestand | Kan worden verwijderd? | Beschermt data? |
---|---|---|---|
Bladbeveiliging | xl/worksheets/sheetX.xml |
✅ Ja | ❌ Nee |
Werkmapstructuur | xl/workbook.xml |
✅ Ja | ❌ Nee |
Alleen-lezen (fileSharing) | xl/workbook.xml |
✅ Ja | ❌ Nee |
Conclusie
Als je denkt dat Excel-wachtwoorden je bestand écht beveiligen tegen ongewenste toegang… denk nog eens goed na. Deze instellingen zijn vooral bedoeld om te voorkomen dat iemand per ongeluk iets aanpast, maar niet om je data te beschermen tegen kwaadwillenden.
Wil je echte beveiliging? Gebruik dan bestandsversleuteling bij het opslaan via Excel zelf, of gebruik externe tools zoals 7-Zip met wachtwoord of VeraCrypt.