VLabs Naturally Shop Builder - Security audit 2.3.8
========================================================

Datum audit: 13 juli 2026
Auditvorm: statische broncodecontrole en gerichte beveiligingshardening.

GECONTROLEERDE ONDERDELEN
- WordPress adminpagina's en instellingen
- Producten, categorieen en orders
- Winkelmand, checkout en orderbevestiging
- Nieuwsbriefinschrijving
- Vendor Registration-formulieren en aanmeldingen
- Bestandsuploads en beveiligde downloads
- AJAX- en admin-post handlers
- Cookies, redirects, e-mails en output escaping

BELANGRIJKSTE VERBETERINGEN
1. Rechten en toegang
   - Product-, order-, categorie- en vendorbeheer vereist manage_options.
   - Adminpagina's en opslaghandlers voeren expliciete capability checks uit.

2. CSRF en requestbeveiliging
   - Nonces worden gecontroleerd op AJAX-, checkout-, nieuwsbrief-, vendor- en downloadacties.
   - Schrijfacties accepteren uitsluitend POST waar van toepassing.
   - Honeypots, minimale invultijd, maximale requestgrootte en rate limits zijn toegevoegd.

3. Inputvalidatie en XSS
   - Tekstlengtes, nummers, e-mailadressen, landen, select-opties, coordinaten en sorteerwaarden zijn begrensd en gevalideerd.
   - Frontend- en e-mailoutput wordt geescaped.
   - Door gebruikers ingevoerde externe URL's worden niet automatisch klikbaar gemaakt.

4. Bestandsuploads
   - Nieuwe vendoruploads worden opgeslagen in een afgeschermde map met willekeurige bestandsnamen.
   - Toegestane typen: JPG, JPEG, PNG, WebP, PDF, DOCX en XLSX.
   - Oude DOC- en XLS-bestanden worden niet meer geaccepteerd vanwege het hogere macrorisico.
   - Downloads vereisen een beheerder, een geldige nonce en padcontrole.
   - Bestanden worden verwijderd wanneer de bijbehorende aanmelding permanent wordt verwijderd.

5. Cart en checkout
   - Veilige HttpOnly/SameSite-cartcookie waar mogelijk.
   - Maximumaantallen voor producten en aantallen in de winkelmand.
   - Duplicate-order lock en request throttling.
   - Orderbevestigingssleutels worden gehasht opgeslagen; bestaande oude orders blijven compatibel.

6. Privacy
   - Nieuwe vendorbestanden worden niet via een publieke upload-URL gedeeld.
   - Beheerder ontvangt beveiligde downloadlinks; vendor ontvangt alleen bestandsnamen.

RESTERENDE AANDACHTSPUNTEN
- Geen enkele code-audit kan absolute hackerbestendigheid garanderen.
- WordPress core, actieve theme/plugins, PHP, webserver, hosting, accounts en wachtwoorden moeten ook actueel en goed beveiligd blijven.
- De kaartfunctie gebruikt externe diensten (Leaflet/OpenStreetMap/Nominatim). Deze afhankelijkheid is behouden om de bestaande kaartfunctie niet te breken.
- Bestaande uploads uit oudere pluginversies worden niet automatisch verplaatst; alleen nieuwe uploads gebruiken de private opslag.
- Test updates eerst op staging en maak voor installatie een volledige back-up.

UITGEVOERDE CONTROLES
- PHP-syntaxcontrole op alle PHP-bestanden
- JavaScript-syntaxcontrole waar Node.js beschikbaar is
- Zoekcontrole op gevaarlijke functies, ongeprepareerde databasequeries en ontbrekende directe-toegangsblokkades
- ZIP-installatiestructuur en versiecontrole
