Documentatie · Privacy, beveiliging en naleving
Beveiligingsaanbevelingen
Dit document verzamelt praktische beveiligingsaanbevelingen voor websites die de ADP Car Market Hub-plugin gebruiken. Het richt zich op operationele hardening, de ingebouwde beveiligingen van de plugin en de controles die sitebeheerders moeten configureren bovenop de standaard WordPress-hardening.
Dit document vervangt geen volledige beveiligingsaudit en garandeert niet dat de site vrij is van kwetsbaarheden. Sitebeheerders moeten hun hosting-setup, WordPress-configuratie en integraties van derden waar nodig beoordelen met een gekwalificeerde beveiligingsspecialist.
Wanneer u dit document moet gebruiken
Gebruik dit document wanneer u:
- Een site die de plugin gebruikt, wilt voorbereiden op productiegebruik.
- De ingebouwde beveiligingscontroles van de plugin wilt beoordelen.
- Operationele beveiligingsmaatregelen wilt plannen (inloggegevens, cron, logging, back-ups).
- Wilt reageren op een interne beveiligingsbeoordeling of vragenlijst.
Overzicht
De plugin vertrouwt op standaard WordPress-beveiligingsprimitieven:
- WordPress-capabilities (aangepaste plugin-capability
manage_as24_importsvoor beheersacties; capabilities per CPT voor voertuigberichten). - WordPress nonces op elk beheerdersformulier, elke AJAX-actie en elke admin POST-handler.
- Standaard WordPress opschonings- en escaping-helpers (
sanitize_*,wp_kses_post,esc_*,wp_unslash). - WordPress transients voor kortstondige status (rate limits, run locks).
- De bestaande TLS, inlogbeveiliging, bestandsrechten en databasebeveiliging van de site.
De plugin voegt verschillende functiespecifieke beveiligingen toe bovenop deze primitieven, die in de volgende sectie worden vermeld.
Ingebouwde beveiligingen
De onderstaande gedragingen weerspiegelen wat de plugin-code momenteel implementeert. Controleer deze in de huidige plugin-versie voordat u er in formele beveiligingsdocumentatie op vertrouwt.
Authenticatie en autorisatie
- Beheerderspagina's en POST-handlers controleren de plugin-beheercapability (
manage_as24_imports) voordat een statuswijziging wordt verwerkt. - Admin AJAX-endpoints in de plugin verifiëren een nonce via
check_ajax_referer. - Inzendingen van beheerdersformulieren gebruiken
check_admin_referermet formulierspecifieke nonce-acties. - Aangepaste capabilities worden toegewezen voor het post-type
as24ci_carmetmap_meta_cap = true, zodat machtigingen per bericht het WordPress meta-cap-mechanisme volgen.
REST API-oppervlak
- De openbare REST-routes voor voertuigen (
/wp-json/as24ci/v1/vehiclesen/wp-json/as24ci/v1/vehicles/{id}) worden alleen geregistreerd als de optie Enable REST API is ingeschakeld. Ze gebruiken eenpermission_callbackvan__return_true, wat betekent dat de gegevens die ze retourneren bedoeld zijn als openbaar en alleen-lezen. Schakel de optie uit als u dit oppervlak niet wilt blootstellen. - Het cron-import-endpoint (
/wp-json/as24ci/v1/cron-import) registreert een openbare route, maar voert token-gebaseerde authenticatie uit binnen de callback. Het token wordt vergeleken methash_equals(vergelijking in constante tijd) en is vereist bij elke aanroep. - Het cron-token kan worden geleverd als een
Authorization: Bearer-header (bij voorkeur — houdt het token buiten de toegangslogs) of als een?token=-queryparameter.
Cron-token
- Het cron-token wordt beheerd vanuit de importinstellingen van de plugin en wordt opgeslagen in de optie
as24ci_cron_tokenals een eenrichtings HMAC-SHA256-hash, zodat de platte tekst niet kan worden hersteld uit een database-dump. De waarde in platte tekst is alleen beschikbaar in de beheerdersinterface gedurende een kort weergavevenster (ongeveer 15 minuten) onmiddellijk nadat het token is gegenereerd of opnieuw is gegenereerd; na dat venster kan de beheerder alleen een nieuw token genereren, niet het vorige onthullen. - Het endpoint weigert verzoeken wanneer er geen token is geconfigureerd.
Misbruikpreventie contactformulier
- Elke inzending moet de
as24ci_contact_formnonce bevatten. - Een verborgen
websitehoneypot-veld weigert geruisloos geautomatiseerde inzendingen zonder een zichtbare fout te produceren. - Een rate limit van 5 inzendingen per IP per 5 minuten wordt afgedwongen via een WordPress transient. Het IP-adres wordt vóór gebruik gehasht met
wp_salt('auth')en wordt niet bij de lead opgeslagen. - Het berichtveld wordt gefilterd met
wp_kses_post.
Zoekagent-tokens
- Elke aanmelding heeft een cryptografisch willekeurig token van 64 tekens dat wordt gebruikt voor zowel de bevestigingslink als de afmeldlink.
- Bevestiging zet een rij alleen om van
pendingnaaractive; opeenvolgend gebruik verandert de status niet opnieuw.
Logger en maskeren van geheimen
- De logger van de plugin schrijft naar een bestand in een speciale submap van de WordPress-uploadmap (
as24ci-logs/). - Bij aanmaak wordt de map beschermd door een
.htaccess-bestand dat alle toegang weigert (alleen Apache) en een leegindex.php-bestand. - Voordat elke regel wordt geschreven, wordt het bericht opgeschoond om fragmenten van
token=…,client_secret=…enAuthorization: Bearer …te maskeren (defence in depth). - Logs roteren bij 10 MB en geroteerde bestanden ouder dan 7 dagen worden automatisch verwijderd.
- Op servers die
.htaccessniet respecteren (Nginx, Caddy, IIS), hangt de blootstelling van de uploadmap af van de configuratie van de webserver. Beheerders moeten ervoor zorgen dat directe toegang totwp-content/uploads/as24ci-logs/op dergelijke servers wordt geblokkeerd.
Gegevens bij deinstallatie
- De tabellen voor analytics en zoekagenten worden onvoorwaardelijk verwijderd bij deinstallatie, zodat trackinggegevens van bezoekers en e-mailadressen van abonnees niet bewaard blijven nadat de plugin is verwijderd.
- De optionele instelling Delete data on uninstall verwijdert ook voertuigberichten, leadberichten, plugin-pagina's en geïmporteerde bijlagen.
Aanbevolen acties voor de beheerder
De onderstaande aanbevelingen combineren standaard WordPress-hardening met pluginspecifieke configuratie.
Inloggegevens en geheimen
- Behandel het AutoScout24 API-clientgeheim en het cron-token als gevoelige geheimen. Ze worden opgeslagen als WordPress-opties, maar worden in rust beschermd door de gecentraliseerde geheimen-helper van de plugin: het clientgeheim is gecodeerd met geauthenticeerde AES-256-GCM (sleutel afgeleid van de WordPress-salts via HKDF-SHA256), en het cron-token is opgeslagen als een eenrichtings HMAC-SHA256-hash zodat de platte tekst niet kan worden hersteld uit een database-dump. Standaard WordPress-databasehardening is nog steeds van toepassing.
De beheerde Gemini API-sleutel die door de AI Assistant wordt gebruikt, is geconfigureerd door AD Promotion in
AS24CI\Ai_Configen wordt niet opgeslagen als een WordPress-optie of getoond in de beheerdersinterface. - Beperk databasetoegang tot beheerders en zorg ervoor dat
wp-config.phpniet voor iedereen leesbaar is. - Roteer het cron-token als er reden is om aan te nemen dat het is blootgesteld (bijvoorbeeld via toegangslogs die de
?token=-queryparameter hebben geregistreerd).
REST- en cron-endpoint
- Schakel Enable REST API uit als u de openbare voertuig-endpoints niet hoeft bloot te stellen.
- Geef bij het gebruik van het ingebouwde cron-endpoint de voorkeur aan
Authorization: Bearer YOUR_TOKENboven?token=…, zodat het geheim niet in de toegangslogs van de webserver verschijnt. - Gebruik HTTPS voor elke externe scheduler die het cron-endpoint aanroept.
- Geef op productiesites de voorkeur aan een betrouwbare systeem-cron die WP-Cron activeert boven het standaard pseudo-cron-gedrag.
Rollen en capabilities
- Verleen de capability
manage_as24_importsalleen aan vertrouwde gebruikers. Standaard is deze toegevoegd aan de roladministrator. - Gebruik de rol
as24ci_editorvan de plugin (of een vergelijkbare aangepaste configuratie) voor personeel dat alleen voertuigberichten hoeft te beheren en niet de plugin-instellingen. Zie Access Control and Capabilities.
Privacy en analytics
- Laat analytics uitgeschakeld totdat u een gedocumenteerde wettelijke basis of een toestemmingsintegratie heeft ingesteld. Zie GDPR / DSGVO Notes en revDSG Notes.
- Houd Filter data minimization ingeschakeld.
- Stel het bewaarvenster voor analytics in op de laagste waarde die compatibel is met uw operationele behoeften (minimaal 7 dagen).
Formulieren en leadverwerking
- Houd optionele velden (Telefoon, Bericht) verborgen als u ze niet nodig heeft.
- Configureer de ontvanger van de e-mailnotificatie voor leads en controleer of dit een beheerde mailbox is.
- Overweeg een SMTP-plugin en SPF/DKIM/DMARC-afstemming om het risico te verkleinen dat e-mails met aanvragen als spam worden gefilterd.
- Verwijder periodiek leads die niet langer nodig zijn voor legitieme zakelijke doeleinden.
AI Assistant-functie
- De AI Assistant gebruikt de beheerde Google Gemini-configuratie in ADP Car Market Hub. Er is geen selectie van provider, model of invoer van een API-sleutel vereist in de WordPress-backend; de klantspecifieke AI-inrichting wordt na installatie voltooid door AD Promotion. Prompts worden via HTTPS naar het beheerde Gemini-endpoint verzonden.
- Beperk wie de AI Assistant kan configureren door de capability
manage_as24_importste beperken. - Beoordeel de toepasselijke gegevensverwerking en contractuele voorwaarden voor de beheerde AI-setup voordat u AI-functies in productie inschakelt.
Bestandssysteem en uploads
- Controleer of de WordPress-uploadmap niet doorzoekbaar is (directory listing) op uw webserver.
- Bevestig op niet-Apache-servers (Nginx, Caddy, IIS) dat
wp-content/uploads/as24ci-logs/niet openbaar toegankelijk is. De plugin schrijft een.htaccesster bescherming op Apache; op andere servers moeten beheerders een gelijkwaardige regel toevoegen. - Houd PHP, WordPress, thema's and andere plugins up-to-date.
Back-ups en incidentrespons
- Neem de WordPress-database op in regelmatige back-ups; deze bevat voertuigberichten, leads, analytics en zoekagentgegevens.
- Test het herstellen van back-ups periodiek.
- Documenteer een incidentresponsplan, inclusief hoe u het cron-endpoint kunt uitschakelen (het cron-token wissen) en het API-clientgeheim kunt intrekken. Om AI-functies uit te schakelen, deactiveert u de AI Assistant via het tabblad AI Assistant in het beheer; de beheerde Gemini-sleutel is eigendom van en wordt geroteerd door AD Promotion.
Stap voor stap: pre-productie beveiligingschecklist
- Bevestig dat WordPress, de plugin en alle andere plugins/thema's de huidige stabiele versies gebruiken.
- Bevestig dat de site via HTTPS wordt aangeboden en dat beheerderssessies beperkt zijn tot HTTPS.
- Beoordeel de WordPress-gebruikerslijst en -rollen. Verwijder ongebruikte accounts.
- Bevestig dat alleen vertrouwde gebruikers de capability
manage_as24_importshebben. - Beslis of de openbare REST-routes nodig zijn. Schakel Enable REST API uit als dit niet het geval is.
- Als het cron-endpoint wordt gebruikt, genereer dan een lang willekeurig cron-token en roep dit aan via
Authorization: Bearer …over HTTPS. - Configureer het e-mailadres van de ontvanger en de toestemmingsinstellingen van het leadformulier.
- Beoordeel de analytics-instellingen (standaard uitgeschakeld; indien ingeschakeld, stel retentie en toestemmingsintegratie in).
- Controleer of de logmap niet openbaar toegankelijk is op uw webserver.
- Maak een nulmeting-back-up voordat u live gaat.
Problemen oplossen
- Openbare gebruikers kunnen admin AJAX of admin POST-handlers aanroepen — controleer of u niet werkt met debug-helpers die capabilities omzeilen; de handlers van de plugin verifiëren bij elk verzoek zowel de capability als de nonce.
- Cron-endpoint retourneert
403 Invalid or missing token— controleer of het cron-token is geconfigureerd in het beheer van de plugin en of de beller dit correct aanlevert viaAuthorization: Bearerof?token=. - Cron-endpoint retourneert
403 Cron token not configured— open de importinstellingen van de plugin en genereer / stel het cron-token in. - Logs roteren niet — controleer of de uploadmap beschrijfbaar is en of WP-Cron actief is. Rotatie wordt periodiek gecontroleerd (bij de eerste aanroep en daarna om de 100 aanroepen).
- Gevoelige waarden verschijnen in logs — de logger maskeert bekende patronen. Als een aangepaste integratie aanvullende geheimen logt, werk die integratie dan bij om ze bij de bron te maskeren.