<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>XLSX vs. XLSM on File Format Blog</title>
    <link>https://blog.fileformat.com/nl/tag/xlsx-vs.-xlsm/</link>
    <description>Recent content in XLSX vs. XLSM on File Format Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>nl</language>
    <lastBuildDate>Mon, 28 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.fileformat.com/nl/tag/xlsx-vs.-xlsm/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Excel-bestandsbeveiliging uitgelegd: XLSX, XLSM en macro-risico&#39;s</title>
      <link>https://blog.fileformat.com/nl/spreadsheet/excel-file-security-explained-xlsx-xlsm-and-macro-risks/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 +0000</pubDate>
      
      <guid>https://blog.fileformat.com/nl/spreadsheet/excel-file-security-explained-xlsx-xlsm-and-macro-risks/</guid>
      <description>Begrijp de werkelijke beveiligingsverschillen tussen XLSX- en XLSM-bestanden, hoe macro‑gebaseerde aanvallen worden uitgevoerd, en hoe u uw organisatie kunt verdedigen tegen kwaadaardige spreadsheets.</description>
      <content:encoded><![CDATA[<p><strong>Laatst bijgewerkt</strong>: 28 sept., 2026</p>
<figure class="align-center ">
    <img loading="lazy" src="images/excel-file-security-explained-xlsx-xlsm-and-macro-risks.png#center"
         alt="XLSX vs. XLSM Security: How Spreadsheet Macros Expose Your Network"/> 
</figure>

<h2 id="excel-bestandsbeveiliging-uitgelegd-xlsx-xlsm-en-macro-risicos">Excel-bestandsbeveiliging uitgelegd: XLSX, XLSM en macro-risico&rsquo;s</h2>
<p>Al decennialang is Microsoft Excel het universele motor van bedrijfsprocessen. Het balanceert bedrijfsbudgetten, visualiseert complexe datasets, houdt de voorraad bij en drijft analytische pijplijnen aan in vrijwel elke sector.</p>
<p>Toch maakt diezelfde rekenflexibiliteit spreadsheets tot een blijvende favoriet onder cybertegenstanders. Aanvallers gebruiken spreadsheets al sinds de vroege dagen van macro‑virussen in de late jaren 90. Terwijl Microsoft en systeembeheerders meerdere verdedigingslagen hebben geïntroduceerd — zoals scheiding van bestandsformaten en standaard macro‑blokkering — blijven social engineering en subtiele architecturale risico&rsquo;s Excel‑gerichte aanvallen relevant houden.</p>
<p>Om een veerkrachtige beveiligingshouding op te bouwen, moeten ontwikkelaars, beheerders en gevorderde gebruikers onder de werkboekinterface kijken. Begrijpen hoe het onderliggende OpenXML-formaat functioneert, hoe <code>.xlsx</code> en <code>.xlsm</code> zich op architecturaal niveau onderscheiden, en hoe de mechanica van macro‑uitvoering werkt, is essentieel voor het verdedigen van moderne eindpunten.</p>
<h2 id="1-anatomie-van-moderne-excelbestanden-openxml-ontleed">1. Anatomie van moderne Excel‑bestanden: OpenXML ontleed</h2>
<p>Voor de release van Microsoft Office 2007 slaat Excel bestanden voornamelijk op met propriëtaire binaire formaten, het meest opvallend het <code>.xls</code>-formaat (gereguleerd door het Binary Interchange File Format, of BIFF8). In <code>.xls</code>-bestanden werden gegevensrecords, opmaakdefinities, formules en Visual Basic for Applications (VBA)-macrostromen verpakt in één gestructureerde opslagcontainer. Dit maakte programmatische inspectie moeilijk en stelde aanvallers in staat kwaadaardige payload‑scripts te verbergen binnen ondoorzichtige binaire sectoren.</p>
<p>Vanaf Excel 2007 introduceerde Microsoft de <strong>Office Open XML (OOXML)</strong>-standaard (gestandaardiseerd als ECMA-376 en ISO/IEC 29500). Onder OOXML zijn Excel-werkboeken niet langer monolithische binaire blobs. In plaats daarvan zijn het zip‑archieven die een hiërarchische structuur van XML‑documenten, relatietabellen en ingebedde media‑assets bevatten.</p>
<h3 id="binnen-de-zip-container">Binnen de ZIP-container</h3>
<p>Als je een standaard modern Excel-werkboek neemt en de extensie wijzigt naar <code>.zip</code>, kun je de inhoud ervan uitpakken met elke standaard decompressie‑tool:</p>
<pre tabindex="0"><code>my_workbook.xlsx (extracted)
│
├── [Content_Types].xml        &lt;-- Registry of MIME types and structural parts
├── _rels/                     &lt;-- Package-level relationship mappings
│   └── .rels
├── docProps/                  &lt;-- Metadata (author, creation date, revision)
│   ├── app.xml
│   └── core.xml
└── xl/                        &lt;-- Core spreadsheet contents
    ├── workbook.xml           &lt;-- Workbook-level parameters and sheet list
    ├── styles.xml             &lt;-- Cell styles, fonts, and borders
    ├── sharedStrings.xml      &lt;-- Unique string index for performance optimization
    ├── _rels/
    │   └── workbook.xml.rels  &lt;-- Sheet and component dependencies
    └── worksheets/
        ├── sheet1.xml         &lt;-- Raw cell values, formulas, and grid geometry
        └── sheet2.xml
</code></pre><p>Deze structurele wijziging leverde directe beveiligingsvoordelen op:</p>
<ol>
<li><strong>DPI (Deep Packet Inspection) &amp; Gateway Visibility:</strong> Beveiligingsapparaten, proxy&rsquo;s en endpoint‑agents kunnen het archief on‑the‑fly uitpakken en platte XML‑bomen analyseren om verdachte tekenreeksen, externe URL&rsquo;s of ingebedde objecten te identificeren.</li>
<li><strong>Deterministic File Validation:</strong> Als een bestand beweert een OpenXML‑document te zijn maar de schemaspecificaties schendt, weigert Excel het te openen of voert het uit in een geïsoleerde herstelmodus.</li>
<li><strong>Format Separation:</strong> Microsoft heeft reguliere rekenbladen losgekoppeld van bestanden die in staat zijn ingebedde procedurele scripts uit te voeren.</li>
</ol>
<h2 id="2-xlsx1-vs-xlsm7-de-architecturale-grens">2. <a href="https://docs.fileformat.com/spreadsheet/xlsx/">XLSX</a> vs. <a href="https://docs.fileformat.com/spreadsheet/xlsm/">XLSM</a>: De architecturale grens</h2>
<p>Het belangrijkste verschil tussen <code>.xlsx</code> en <code>.xlsm</code> is of de bestandsstructuur de opname van uitvoerbare macro‑projecten toestaat.</p>
<table>
<thead>
<tr>
<th style="text-align:left">Functie / Dimensie</th>
<th style="text-align:left"><code>.xlsx</code> (Excel OpenXML-spreadsheet)</th>
<th style="text-align:left"><code>.xlsm</code> (Excel-macro-ingeschakelde spreadsheet)</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left"><strong>MIME-inhoudstype</strong></td>
<td style="text-align:left"><code>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</code></td>
<td style="text-align:left"><code>application/vnd.ms-excel.sheet.macroEnabled.12</code></td>
</tr>
<tr>
<td style="text-align:left"><strong>VBA-opslagcontainer</strong></td>
<td style="text-align:left"><strong>Strikt verboden.</strong> Kan <code>vbaProject.bin</code> niet opslaan</td>
<td style="text-align:left"><strong>Toegestaan.</strong> Bevat <code>xl/vbaProject.bin</code></td>
</tr>
<tr>
<td style="text-align:left"><strong>Risico op native uitvoering</strong></td>
<td style="text-align:left">Verwaarloosbaar voor macro-uitvoering; beperkt tot formule-injectie/DDE</td>
<td style="text-align:left">Hoog; kan geautomatiseerde VBA-code uitvoeren bij interactie met de werkmap</td>
</tr>
<tr>
<td style="text-align:left"><strong>OpenXML Strikt Schema</strong></td>
<td style="text-align:left">Voldoet aan strikte, macro-vrije XML-definities</td>
<td style="text-align:left">Bevat definities voor legacy- en moderne automatiseringsextensies</td>
</tr>
<tr>
<td style="text-align:left"><strong>Gebruikersvisuele Indicator</strong></td>
<td style="text-align:left">Standaard groen spreadsheet‑icoon</td>
<td style="text-align:left">Spreadsheet‑icoon gemarkeerd met een uitroepteken</td>
</tr>
</tbody>
</table>
<h3 id="het-handhavingsmechanisme-waarom-xlsx-geen-macros-kan-uitvoeren">Het handhavingsmechanisme: Waarom XLSX geen macro&rsquo;s kan uitvoeren</h3>
<p>Een veelgestelde vraag onder junior beheerders en ontwikkelaars is: <em>Wat gebeurt er als een aanvaller een kwaadaardig <code>.xlsm</code>-bestand neemt, uitvoerbare code injecteert en de bestandsextensie hernoemt naar <code>.xlsx</code>?</em></p>
<p>Kort antwoord: <strong>Het bestand zal de macro niet uitvoeren.</strong></p>
<p>Excel vertrouwt niet uitsluitend op de bestandsextensie om uitvoerregels te bepalen. Bij het openen van een bestand met de naam <code>.xlsx</code>:</p>
<ol>
<li>Excel inspecteert de zip‑payload en verwijst naar <code>[Content_Types].xml</code>.</li>
<li>In een echt <code>.xlsx</code>‑bestand vertegenwoordigen alle gedefinieerde content‑types standaardgegevens (zoals <code>worksheet</code>, <code>sharedStrings</code> of <code>styles</code>).</li>
<li>Als een aanvaller handmatig een gecompileerde VBA‑stroom (<code>xl/vbaProject.bin</code>) in een <code>.xlsx</code>‑pakket injecteert en de relaties bijwerkt, stuit Excel op een expliciete schema‑contradictie:
<ul>
<li>Het ziet een <code>.xlsx</code>‑extensie gekoppeld aan content‑types die macro‑mogelijkheden aangeven.</li>
<li>Excel geeft een fatale integriteitsfout: <em>&ldquo;Excel kan het bestand &lsquo;filename.xlsx&rsquo; niet openen omdat het bestandsformaat of de bestandsextensie niet geldig is. Controleer of het bestand niet beschadigd is&hellip;&rdquo;</em></li>
</ul>
</li>
<li>Als de aanvaller de interne typen intact laat zonder het binaire bestand te registreren, behandelt Excel <code>vbaProject.bin</code> als een niet‑gerefereerde, verweesde bijlage binnen het zip‑archief en verwijdert het volledig tijdens de laadcyclus.</li>
</ol>
<p>Daarom kan <strong>een bestand dat strikt functioneert als een authentieke <code>.xlsx</code>-container geen native VBA-code uitvoeren.</strong> Dat betekent echter niet dat <code>.xlsx</code>-bestanden vrij zijn van alle aanvalsvectoren, zoals later in deze gids wordt besproken.</p>
<h2 id="3-macro-risicos--de-aanvalscyclus">3. Macro-risico&rsquo;s &amp; de aanvalscyclus</h2>
<p>Macro&rsquo;s werden ontwikkeld om repetitieve boekhoud-, financiële modellering- en gegevensmanipulatietaken te automatiseren via Visual Basic for Applications (VBA). Omdat VBA is ontworpen voor automatisering op de werkvloer, kreeg het uitgebreide toegang tot het onderliggende Windows‑besturingssysteem via het Component Object Model (COM), Windows Script Host (WSH) en directe Win32 API‑aanroepen.</p>
<p>Wanneer een niet‑vertrouwde macro wordt uitgevoerd, draait deze met de <strong>exact dezelfde privileges als de aangemelde gebruiker</strong>. Hij wordt niet opgesloten in een gevirtualiseerde, JavaScript‑achtige browsersandbox.</p>
<pre tabindex="0"><code>+--------------------------------------------------------------------------------+
|                             ATTACK LIFECYCLE                                   |
+--------------------------------------------------------------------------------+
                                       │
                                       ▼
  [ Delivery &amp; Evasion ]  ──────► Spear-phishing email with .xlsm, .xlam, or .zip.
                                       │
                                       ▼
  [ Social Engineering ]  ──────► Lures victim to bypass Protected View (&#34;Enable Content&#34;).
                                       │
                                       ▼
  [ Auto-Execution ]      ──────► Auto_Open() or Workbook_Open() triggers automatically.
                                       │
                                       ▼
  [ System Invocation ]   ──────► VBA creates COM objects (WScript.Shell, WinHttp.WinHttpRequest).
                                       │
                                       ▼
  [ Payload Retrieval ]   ──────► Spawns hidden PowerShell/cURL to fetch staging binary.
                                       │
                                       ▼
  [ Post-Exploitation ]   ──────► In-memory execution, credential theft, lateral movement.
</code></pre><h3 id="algemene-macro-ingressietechnieken">Algemene macro-ingressietechnieken</h3>
<ol>
<li>
<p><strong>Auto‑executie‑hooks:</strong>
Aanvallers plaatsen hun toegangspunt binnen intrinsieke gebeurtenishandlers zoals <code>Sub Auto_Open()</code> of <code>Private Sub Workbook_Open()</code>. Zodra de gebruiker uitvoeringsrechten verleent, worden deze routines geactiveerd zonder dat er kliks nodig zijn binnen het werkblad.</p>
</li>
<li>
<p><strong>Obfuscatie en Stomping:</strong></p>
<ul>
<li><strong>String-obfuscatie:</strong> Payloads verbergen URL&rsquo;s en systeemaanroepen met behulp van tekenreeksen, XOR-codering, Base64-decodering, of samenvoeging van omgevingsvariabelen (bijv. <code>Chr(112) &amp; Chr(111) &amp; Chr(119)...</code>).</li>
<li><strong>VBA Stomping:</strong> VBA bestaat in twee vormen binnen <code>vbaProject.bin</code>: geïnterpreteerde broncode en gecompileerde p-code (pseudo-code gericht op de specifieke Office‑versie die het compileerde). Aanvallers kunnen de leesbare broncode volledig wissen, waardoor alleen de gecompileerde p-code overblijft. Veel eenvoudige antivirusoplossingen en statische analysers inspecteren alleen de bronstroom, waardoor de p-code onopgemerkt blijft tot uitvoering door een overeenkomende Office‑versie.</li>
</ul>
</li>
<li>
<p><strong>Living off the Land (LotL):</strong>
Moderne kwaadaardige macro&rsquo;s plaatsen zelden direct een <code>.exe</code>-bestand op schijf, wat onmiddellijk Endpoint Detection and Response (EDR)-agents zou alarmeren. In plaats daarvan communiceren ze met ingebouwde systeemtools:</p>
<ul>
<li>Instantieren van <code>WScript.Shell</code> om opdrachtregelargumenten uit te voeren.</li>
<li>Het aanroepen van <code>PowerShell.exe</code> met een uitvoeringsbeleid omzeilt (<code>-ExecutionPolicy Bypass -WindowStyle Hidden</code>).</li>
<li>Het aanroepen van native Win32-API&rsquo;s via <code>Declare PtrSafe Function CreateProcess</code> of <code>VirtualAlloc</code> om shellcode direct in het systeemgeheugen te injecteren.</li>
</ul>
</li>
</ol>
<h2 id="4-andere-spreadsheet-bedreigingsvectoren-buiten-standaard-vba">4. Andere spreadsheet-bedreigingsvectoren (buiten standaard VBA)</h2>
<p>Een omgeving beveiligen tegen <code>.xlsm</code>-bestanden is slechts de helft van de strijd. Tegenstanders gebruiken ook mechanismen die onafhankelijk van traditionele VBA werken.</p>
<h3 id="dynamische-gegevensuitwisseling-dde-en-csv11-injectie">Dynamische gegevensuitwisseling (DDE) en <a href="https://docs.fileformat.com/spreadsheet/csv/">CSV</a> injectie</h3>
<p>Excel bevat een verouderd protocol genaamd Dynamic Data Exchange (DDE), ontworpen om gegevensuitwisseling tussen draaiende applicaties mogelijk te maken (bijvoorbeeld het streamen van live beurskoersen van een apart programma naar een Excel-cel).</p>
<ul>
<li><strong>Hoe formule-injectie werkt:</strong>
Wanneer een spreadsheetcel begint met tekens zoals <code>=</code>, <code>@</code>, <code>+</code> of <code>-</code>, interpreteert Excel de inhoud als een formule. Als een aanvaller de invoer die naar een spreadsheet wordt geëxporteerd controleert (bijvoorbeeld een niet-gesanitiseerd &ldquo;Comments&rdquo;-veld in een webapplicatie dat wordt geëxporteerd naar CSV of XLSX), kan hij injecteren:
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>=cmd|&#39;/C powershell.exe -w hidden -enc &lt;base64_payload&gt;&#39;!A0
</span></span></code></pre></div></li>
<li>Bij openen evalueert Excel de formule, waarschuwt de gebruiker met een prompt over het starten van een externe applicatie, en voert, indien goedgekeurd, de systeem-shell uit.</li>
</ul>
<h3 id="excel-40-xlm-legacy-macros">Excel 4.0 (XLM) legacy-macro&rsquo;s</h3>
<p>Voordat VBA in 1993 werd geïntroduceerd, gebruikte Excel een formulegebaseerd macro‑systeem dat bekend staat als <strong>Excel 4.0 (XLM) macro&rsquo;s</strong>. Deze macro&rsquo;s bevinden zich in speciale macro‑bladen in plaats van in een apart VBA‑project.</p>
<p>Omdat XLM-macro&rsquo;s worden geschreven als cel‑formules (zoals <code>=EXEC(\&quot;calc.exe\&quot;)</code>), omzeilen ze veel standaard VBA‑statische inspectie‑engines. Aanvallers gaven de voorkeur aan XLM-macro&rsquo;s in de late jaren 2010 en het begin van de jaren 2020 om geautomatiseerde detectie te ontwijken voordat Microsoft ze standaard uitschakelde in moderne enterprise‑versies.</p>
<h3 id="kwaadaardige-externe-verbindingen-en-ole-objecten">Kwaadaardige externe verbindingen en OLE-objecten</h3>
<p>Een gewoon <code>.xlsx</code>‑werkboek kan nog steeds risico&rsquo;s introduceren via externe bronnen:</p>
<ul>
<li><strong>Ingebedde OLE‑pakketten:</strong> Een aanvaller kan een uitvoerbaar bestand, vermomd als een ingebed PDF‑pictogram, direct in het werkblad invoegen.</li>
<li><strong>Externe werkboek‑koppelingen &amp; web‑query&rsquo;s:</strong> Een XLSX kan externe referenties bevatten die bij het openen van het bestand automatisch HTTP‑GET‑verzoeken starten naar door de aanvaller gecontroleerde command‑and‑control (C2)‑servers, voornamelijk gebruikt voor verkenning of netNTLM‑hash‑verzamelingsaanvallen.</li>
</ul>
<h2 id="5-enterprise-hardening-en-defense-in-depth-strategieën">5. Enterprise hardening en defense-in-depth strategieën</h2>
<p>Bescherming tegen door Excel veroorzaakte bedreigingen vereist een gelaagde aanpak die netwerkinspectie, systeemconfiguratie, toegangscontroles en operationele processen omvat.</p>
<pre tabindex="0"><code>+─────────────────────────────────────────────────────────+
|                  ENTERPRISE DEFENSE LAYERS               |
+─────────────────────────────────────────────────────────+
|  PERIMETER: Drop inbound .xlsm, .xla, and .xltm at mail |
|  gateway unless cryptographically signed or exempted.   |
+---------------------------------------------------------+
|  IDENTITY &amp; POLICY: Enforce ASR rules and apply         |
|  Mark of the Web (MotW) macro execution blocks.         |
+---------------------------------------------------------+
|  RUNTIME: Hook AMSI into Office to evaluate dynamic     |
|  VBA buffers directly before execution.                 |
+---------------------------------------------------------+
|  STORAGE: Restrict macro execution exclusively to       |
|  managed, centralized Trusted Locations.                |
+─────────────────────────────────────────────────────────+
</code></pre><h3 id="1-handhaaf-mark-of-the-web-motw-macro-blokkering">1. Handhaaf Mark of the Web (MotW) macro-blokkering</h3>
<p>In 2022 heeft Microsoft het standaardgedrag van Office-toepassingen bijgewerkt: macro&rsquo;s in bestanden die van internet afkomstig zijn, zijn <strong>standaard geblokkeerd</strong>.</p>
<p>Wanneer een gebruiker een bestand downloadt via een browser of externe client, labelt Windows het bestand met een alternatieve datastroom (ADS) genaamd <code>Zone.Identifier</code> (Zone 3 geeft internet aan). Voor bestanden met deze markering schakelt Excel macro&rsquo;s volledig uit en toont een rood beveiligingsbanner: &gt; <em>&quot;BEVEILIGINGSRISICO: Microsoft heeft macro&rsquo;s geblokkeerd omdat de bron van dit bestand niet vertrouwd is.&quot;</em></p>
<p><strong>Administratieve actie:</strong> Zorg ervoor dat dit gedrag wordt afgedwongen via Groepsbeleid en niet kan worden overschreven door eindgebruikers:</p>
<ul>
<li><strong>GPO-pad:</strong> <code>User Configuration &gt; Administrative Templates &gt; Microsoft Excel 2016 &gt; Excel Options &gt; Security &gt; Trust Center</code></li>
<li><strong>Instelling:</strong> Schakel <em>&quot;Macro&rsquo;s blokkeren die worden uitgevoerd in Office-bestanden van het internet&quot;</em> in.</li>
</ul>
<h3 id="2-configureer-attack-surface-reduction-asr-regels">2. Configureer Attack Surface Reduction (ASR)-regels</h3>
<p>Organisaties die Microsoft Defender for Endpoint gebruiken, moeten de kernregels voor Attack Surface Reduction activeren die specifiek zijn ontworpen voor Office-toepassingen:</p>
<ul>
<li><code>Office-toepassingen blokkeren om childprocessen te maken</code> (GUID: <code>D4F940AB-401B-4EFC-AADC-AD5F3C50688A</code>)
<ul>
<li><em>Voorkomt dat Excel PowerShell, CMD of scripttalen start.</em></li>
</ul>
</li>
<li><code>Blokkeer Office-toepassingen om code in andere processen te injecteren</code> (GUID: <code>75668C1F-73B5-4CF0-BB93-3ECF5CB7CC84</code>)</li>
<li><code>Blokkeer Win32 API-aanroepen vanuit Office-macro's</code> (GUID: <code>92E6390C-CF9E-43CE-BD8C-0E6F0FE66680</code>)</li>
</ul>
<h3 id="3-benut-de-antimalware-scan-interface-amsi">3. Benut de Antimalware Scan Interface (AMSI)</h3>
<p>Moderne versies van Microsoft 365 integreren VBA-uitvoering direct met AMSI. Zelfs als een aanvaller complexe tekenreeksobfuscatie of VBA-stomping toepast, geeft de VBA-runtime-engine de gereconstrueerde, niet-versleutelde commando&rsquo;s door aan uw geïnstalleerde antivirus/EDR-engine op het exacte milliseconden vóór uitvoering. Zorg ervoor dat uw endpoint-bescherming actief AMSI-runtime‑gebeurtenissen monitort.</p>
<h3 id="4-overstappen-naar-vertrouwde-locaties-en-digitale-certificaten">4. Overstappen naar vertrouwde locaties en digitale certificaten</h3>
<p>Voor organisaties die afhankelijk zijn van geautomatiseerde spreadsheets voor de dagelijkse bedrijfsvoering:</p>
<ul>
<li><strong>Verwijder losse XLSM-bestanden in de Downloads of bureaubladmappen van gebruikers.</strong></li>
<li><strong>Gebruik vertrouwde locaties:</strong> Beperk macro-uitvoering uitsluitend tot alleen-lezen netwerkschijven die door IT-beheerders worden beheerd.</li>
<li><strong>Codeondertekening:</strong> Verplicht dat alle intern ontwikkelde macro&rsquo;s cryptografisch worden ondertekend met een certificaat uitgegeven door een enterprise Public Key Infrastructure (PKI). Configureer Excel om <strong>alleen</strong> digitaal ondertekende macro&rsquo;s uit te voeren en ondertekende macro&rsquo;s stilzwijgend te blokkeren.</li>
</ul>
<h2 id="6-het-perspectief-van-de-ontwikkelaar-veilige-automatisering-bouwen">6. Het perspectief van de ontwikkelaar: veilige automatisering bouwen</h2>
<p>Als je software ontwikkelt die Excel‑bestanden parseert, genereert of verbruikt (bijv. Python‑pijplijnen met <code>pandas</code>/<code>openpyxl</code>, Node.js‑microservices of C#/.NET‑applicaties), pas dan deze ontwikkelingsmaatregelen toe:</p>
<ol>
<li>
<p><strong>Weiger onverwachte bestandsformaten bij de uploadgrens:</strong>
Als je applicatie financiële rapporten verwacht, valideer dan strikt dat binnenkomende bestanden voldoen aan <code>.xlsx</code>. Inspecteer de interne magic bytes (de standaard zip‑header <code>50 4B 03 04</code>) en controleer dat er geen <code>vbaProject.bin</code>‑items aanwezig zijn in de archiefindex voordat je ze opslaat in cloud‑buckets of databases.</p>
</li>
<li>
<p><strong>Sanitiseer data tegen formule‑injectie:</strong>
Bij het exporteren van door gebruikers gegenereerde invoer naar CSV‑ of XLSX‑bestanden, plaats een apostrof (<code>'</code>) of een spatie vóór elke cel die begint met gevaarlijke tekens (<code>=</code>, <code>+</code>, <code>-</code>, <code>@</code>, <code>\t</code>, <code>\r</code>):</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">sanitize_for_spreadsheet</span>(value: str) <span style="color:#f92672">-&gt;</span> str:
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span> value <span style="color:#f92672">and</span> value[<span style="color:#ae81ff">0</span>] <span style="color:#f92672">in</span> (<span style="color:#e6db74">&#39;=&#39;</span>, <span style="color:#e6db74">&#39;+&#39;</span>, <span style="color:#e6db74">&#39;-&#39;</span>, <span style="color:#e6db74">&#39;@&#39;</span>, <span style="color:#e6db74">&#39;</span><span style="color:#ae81ff">\t</span><span style="color:#e6db74">&#39;</span>, <span style="color:#e6db74">&#39;</span><span style="color:#ae81ff">\r</span><span style="color:#e6db74">&#39;</span>):
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> <span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;&#39;</span><span style="color:#e6db74">{</span>value<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> value
</span></span></code></pre></div></li>
<li>
<p><strong>Migreer van VBA naar Office Scripts of web‑add‑ins:</strong>
Voor moderne bedrijfsautomatisering, elimineer legacy VBA volledig:</p>
<ul>
<li><strong>Office Scripts:</strong> Geschreven in TypeScript, Office Scripts draaien binnen een gesandboxt cloud‑omgeving en functioneren soepel in zowel web‑ als desktop‑edities zonder native OS‑systeemaanroepen bloot te stellen.</li>
<li><strong>Office Web Add-ins:</strong> Gebouwd met standaard HTML, CSS en moderne JavaScript, communiceren web-add-ins via beheerde JavaScript-API&rsquo;s en zijn geïsoleerd van het lokale besturingssysteem.</li>
</ul>
</li>
</ol>
<h2 id="7-samenvattende-checklist-voor-spreadsheetbeveiliging">7. Samenvattende checklist voor spreadsheetbeveiliging</h2>
<ul>
<li><input disabled="" type="checkbox"> <strong>Forceer <code>.xlsx</code> standaard:</strong> Vereis dat alle standaard gebruikersworkflows opslaan als macro-vrije <code>.xlsx</code>.</li>
<li><input disabled="" type="checkbox"> <strong>Blokkeer macro&rsquo;s van internet‑herkomst:</strong> Bevestig dat de MotW‑beleidsafhandeling is uitgerold in uw organisatie via GPO of Intune.</li>
<li><input disabled="" type="checkbox"> <strong>Schakel ASR‑regels in:</strong> Verbied Office‑producten om opdracht‑interpreters of sub‑processen te starten.</li>
<li><input disabled="" type="checkbox"> <strong>Deprecieer Excel 4.0 (XLM):</strong> Zorg ervoor dat verouderde XLM‑macro‑engines permanent zijn uitgeschakeld op alle werkstations.</li>
<li><input disabled="" type="checkbox"> <strong>Sanitiseer applicatie‑exports:</strong> Bescherm CSV‑ en Excel‑generatieroutines tegen CSV/formule‑injectie.</li>
<li><input disabled="" type="checkbox"> <strong>Schuif richting Office Scripts:</strong> Zet verouderde administratieve macro&rsquo;s over naar TypeScript‑gedreven Office Scripts en beheerde API&rsquo;s.</li>
</ul>
<p>Door spreadsheets niet alleen als documentbestanden te beschouwen, maar als gestructureerde softwarecontainers die uitvoerbare mogelijkheden bevatten, kunnen beveiligingsteams en ontwikkelaars effectief een van de oudste aanvalsvectoren in enterprise‑computing neutraliseren.</p>
<h1 id="veelgestelde-vragen-faq">Veelgestelde vragen (FAQ)</h1>
<h3 id="q1-kan-een-bestand-dat-eindigt-op-xlsx-een-kwaadaardige-macro-uitvoeren">Q1: Kan een bestand dat eindigt op <code>.xlsx</code> een kwaadaardige macro uitvoeren?</h3>
<p>Nee, de OpenXML-standaard verbiedt strikt macrocode in <code>.xlsx</code>-bestanden, en Excel zal elk VBA-project dat in een echt <code>.xlsx</code>-container is geïnjecteerd, weigeren of verwijderen.</p>
<h3 id="q2-wat-moet-ik-doen-als-een-excelbestand-me-vraagt-om-bewerken-inschakelen-of-inhoud-inschakelen">Q2: Wat moet ik doen als een Excel‑bestand me vraagt om &ldquo;Bewerken inschakelen&rdquo; of &ldquo;Inhoud inschakelen&rdquo;?</h3>
<p>Verleen alleen toestemming als je de afzender kent en het bestand verwachtte; deze prompt is het belangrijkste controlepunt dat onbetrouwbare macro&rsquo;s toestaat code uit te voeren.</p>
<h3 id="q3-hoe-bepaalt-microsoft-excel-of-een-bestand-van-internet-afkomstig-is">Q3: Hoe bepaalt Microsoft Excel of een bestand van internet afkomstig is?</h3>
<p>Windows voegt een verborgen &ldquo;Mark of the Web&rdquo; (Zone.Identifier)-stroom toe aan gedownloade bestanden, waardoor Excel ze standaard in Beschermde weergave opent en macro&rsquo;s blokkeert.</p>
<h3 id="q4--zijn-csvbestanden-veiliger-dan-xlsx1-en-xlsm7-bestanden">Q4:  Zijn CSV‑bestanden veiliger dan <a href="https://docs.fileformat.com/spreadsheet/xlsx/">XLSX</a> en <a href="https://docs.fileformat.com/spreadsheet/xlsm/">XLSM</a> bestanden?</h3>
<p>CSV-bestanden kunnen geen native VBA-macro&rsquo;s bevatten, maar ze blijven kwetsbaar voor formule-injectieaanvallen als ze kwaadaardige commando&rsquo;s bevatten die door Excel bij het openen worden uitgevoerd.</p>
<h3 id="q5-hoe-verschillen-moderne-officescripts-van-traditionele-vbamacros">Q5: Hoe verschillen moderne Office‑scripts van traditionele VBA‑macro&rsquo;s?</h3>
<p>Office Scripts draaien op TypeScript binnen een gesandboxt runtime‑omgeving, waardoor ze geen toegang hebben tot je lokale bestandssysteem, opdrachtregel of besturingssysteem‑API&rsquo;s.</p>
<h2 id="zie-ook">Zie ook</h2>
<ul>
<li><a href="https://blog.fileformat.com/en/spreadsheet/csv-vs-xlsx-vs-ods-in-2026-best-spreadsheet-format-for-developers/">CSV vs XLSX vs ODS in 2026: Beste spreadsheetformaat voor ontwikkelaars</a></li>
<li><a href="https://blog.fileformat.com/en/spreadsheet/xls-vs-xlsx-vs-xlsm-vs-xlsb-choosing-the-right-spreadsheet-format/">XLS vs XLSX vs XLSM vs XLSB - Het juiste spreadsheetformaat kiezen</a></li>
<li><a href="https://blog.fileformat.com/spreadsheet/what-is-excel/">Wat is Excel? Belangrijke informatie die je moet weten</a></li>
<li><a href="https://blog.fileformat.com/spreadsheet/excel-file-extensions-xlsx-xlsm-xls-xltx-xltm/">Excel-bestandsformaten: XLSX, XLSM, XLS, XLTX, XLTM</a></li>
<li><a href="https://blog.fileformat.com/spreadsheet/xls-vs-xlsx/">Verschil tussen XLS en XLSX</a></li>
</ul>
<!-- raw HTML omitted -->
]]></content:encoded>
    </item>
    
  </channel>
</rss>
