Dokumentation · Datenschutz, Sicherheit und Compliance
Sicherheitsempfehlungen
Dieses Dokument sammelt praktische Sicherheitsempfehlungen für Websites, auf denen das ADP Car Market Hub-Plugin läuft. Es konzentriert sich auf die betriebliche Härtung, die im Plugin integrierten Schutzmaßnahmen und die Kontrollen, die Website-Betreiber zusätzlich zur standardmäßigen WordPress-Härtung konfigurieren sollten.
Dieses Dokument ersetzt kein vollständiges Sicherheitsaudit und garantiert nicht, dass die Website frei von Schwachstellen ist. Website-Betreiber sollten ihr Hosting-Setup, die WordPress-Konfiguration und Drittanbieter-Integrationen gegebenenfalls mit einem qualifizierten Sicherheitsspezialisten überprüfen.
Wann Sie dieses Dokument verwenden sollten
Verwenden Sie dieses Dokument, wenn Sie:
- Eine Website, die das Plugin verwendet, für den Produktivbetrieb vorbereiten möchten.
- Die integrierten Sicherheitskontrollen des Plugins überprüfen möchten.
- Betriebliche Sicherheitsmaßnahmen planen (Zugangsdaten, Cron, Protokollierung, Backups).
- Auf eine interne Sicherheitsüberprüfung oder einen Fragebogen antworten müssen.
Übersicht
Das Plugin verlässt sich auf standardmäßige WordPress-Sicherheitsprimitive:
- WordPress-Berechtigungen (benutzerdefinierte Plugin-Berechtigung
manage_as24_importsfür Verwaltungsaktionen; CPT-spezifische Berechtigungen für Fahrzeug-Beiträge). - WordPress-Nonces bei jedem Admin-Formular, jeder AJAX-Aktion und jedem Admin-POST-Handler.
- Standardmäßige WordPress-Bereinigungs- und Maskierungs-Hilfsfunktionen
(
sanitize_*,wp_kses_post,esc_*,wp_unslash). - WordPress-Transients für kurzlebige Zustände (Rate-Limits, Ausführungssperren).
- Die bestehende TLS-Verschlüsselung, den Login-Schutz, die Dateiberechtigungen und die Datenbanksicherheit der Website.
Das Plugin fügt zusätzlich zu diesen Primitiven mehrere funktionsspezifische Schutzmaßnahmen hinzu, die im nächsten Abschnitt aufgeführt sind.
Integrierte Schutzmaßnahmen
Die folgenden Verhaltensweisen spiegeln das wider, was der Plugin-Code derzeit implementiert. Überprüfen Sie diese in der aktuellen Plugin-Version, bevor Sie sich in formellen Sicherheitsdokumenten darauf verlassen.
Authentifizierung und Autorisierung
- Admin-Seiten und POST-Handler überprüfen die Plugin-Verwaltungsberechtigung
(
manage_as24_imports), bevor sie eine Zustandsänderung verarbeiten. - Admin-AJAX-Endpunkte im Plugin verifizieren ein Nonce über
check_ajax_referer. - Admin-Formularübermittlungen verwenden
check_admin_referermit formularspezifischen Nonce-Aktionen. - Benutzerdefinierte Berechtigungen werden für den Post-Type
as24ci_carmitmap_meta_cap = truegemappt, sodass Berechtigungen pro Beitrag dem WordPress Meta-Cap-Mechanismus folgen.
REST-API-Oberfläche
- Die öffentlichen Fahrzeug-REST-Routen (
/wp-json/as24ci/v1/vehiclesund/wp-json/as24ci/v1/vehicles/{id}) werden nur registriert, wenn die Option REST-API aktivieren eingeschaltet ist. Sie verwenden einenpermission_callbackvon__return_true, was bedeutet, dass die von ihnen zurückgegebenen Daten für den öffentlichen Lesezugriff bestimmt sind. Deaktivieren Sie die Option, wenn Sie diese Oberfläche nicht freigeben möchten. - Der Cron-Import-Endpunkt (
/wp-json/as24ci/v1/cron-import) registriert eine öffentliche Route, führt jedoch eine tokenbasierte Authentifizierung innerhalb des Callbacks durch. Das Token wird mithash_equalsverglichen (Vergleich in konstanter Zeit) und ist bei jedem Aufruf erforderlich. - Das Cron-Token kann entweder als
Authorization: Bearer-Header (bevorzugt – hält das Token aus den Zugriffsprotokollen fern) oder als?token=-Abfrageparameter übergeben werden.
Cron-Token
- Das Cron-Token wird in den Import-Einstellungen des Plugins verwaltet und wird
in der Option
as24ci_cron_tokenals Einweg-HMAC-SHA256-Hash gespeichert, sodass der Klartext nicht aus einem Datenbank-Dump wiederhergestellt werden kann. Der Klartextwert ist in der Admin-Benutzeroberfläche nur für ein kurzes Anzeigefenster (ca. 15 Minuten) unmittelbar nach dem Generieren oder Regenerieren des Tokens verfügbar; nach diesem Fenster kann der Administrator nur ein neues Token generieren, nicht aber das vorherige anzeigen. - Der Endpunkt verweigert Anfragen, wenn kein Token konfiguriert ist.
Missbrauchsschutz für Kontaktformulare
- Jede Übermittlung muss das
as24ci_contact_form-Nonce tragen. - Ein verstecktes
website-Honeypot-Feld weist automatisierte Übermittlungen stillschweigend ab, ohne einen sichtbaren Fehler zu erzeugen. - Ein Rate-Limit von 5 Übermittlungen pro IP und 5 Minuten wird über ein
WordPress-Transient erzwungen. Die IP-Adresse wird vor der Verwendung mit
wp_salt('auth')gehasht und nicht mit dem Lead gespeichert. - Das Nachrichtenfeld wird mit
wp_kses_postgefiltert.
Suchauftrags-Token
- Jedes Abonnement verfügt über ein kryptografisch zufälliges Token mit 64 Zeichen, das sowohl für den Bestätigungslink als auch für den Abmeldelink verwendet wird.
- Die Bestätigung ändert den Status einer Zeile nur von
pendingaufactive; nachträgliche Aufrufe ändern den Status nicht erneut.
Logger und Maskierung von Geheimnissen
- Der Logger des Plugins schreibt in eine Datei innerhalb eines dedizierten Unterverzeichnisses
des WordPress-Upload-Ordners (
as24ci-logs/). - Bei der Erstellung wird das Verzeichnis durch eine
.htaccess-Datei geschützt, die jeglichen Zugriff verweigert (nur Apache), sowie durch eine leereindex.php-Datei. - Bevor jede Zeile geschrieben wird, wird die Nachricht bereinigt, um Fragmente von
token=…,client_secret=…undAuthorization: Bearer …zu maskieren (Defense-in-Depth). - Protokolle rotieren bei 10 MB, und rotierte Dateien, die älter als 7 Tage sind, werden automatisch gelöscht.
- Auf Servern, die
.htaccessnicht berücksichtigen (Nginx, Caddy, IIS), hängt die Freigabe des Upload-Verzeichnisses von der Webserver-Konfiguration ab. Betreiber sollten sicherstellen, dass der direkte Zugriff aufwp-content/uploads/as24ci-logs/auf solchen Servern blockiert ist.
Daten bei der Deinstallation
- Die Tabellen für Analytics und Suchagenten werden bei der Deinstallation bedingungslos gelöscht, sodass Besucher-Tracking-Daten und E-Mail-Adressen von Abonnenten nach dem Entfernen des Plugins nicht bestehen bleiben.
- Die optionale Einstellung Daten bei Deinstallation löschen entfernt auch Fahrzeug-Beiträge, Lead-Beiträge, Plugin-Seiten und importierte Anhänge.
Empfohlene Maßnahmen für Betreiber
Die folgenden Empfehlungen kombinieren die standardmäßige WordPress-Härtung mit der pluginspezifischen Konfiguration.
Zugangsdaten und Geheimnisse
- Behandeln Sie das API-Client-Secret von AutoScout24 und das Cron-Token als
sensible Geheimnisse. Sie werden als WordPress-Optionen gespeichert, sind aber
im Ruhezustand durch den zentralen Secrets-Helper des Plugins geschützt: Das
Client-Secret wird mit authentifiziertem AES-256-GCM verschlüsselt (Schlüssel abgeleitet
aus den WordPress-Salts via HKDF-SHA256), und das Cron-Token wird als
Einweg-HMAC-SHA256-Hash gespeichert, sodass der Klartext nicht aus einem Datenbank-Dump
wiederhergestellt werden kann. Die standardmäßige WordPress-Datenbankhärtung
gilt weiterhin.
Der vom KI-Assistenten verwendete verwaltete Gemini-API-Schlüssel wird von
AD Promotion in
AS24CI\Ai_Configkonfiguriert und wird nicht als WordPress-Option gespeichert oder in der Admin-Benutzeroberfläche offengelegt. - Beschränken Sie den Datenbankzugriff auf Administratoren und stellen Sie sicher, dass
wp-config.phpnicht weltweit lesbar ist. - Rotieren Sie das Cron-Token, wenn Grund zu der Annahme besteht, dass es
offengelegt wurde (beispielsweise durch Zugriffsprotokolle, die den
?token=-Abfrageparameter aufgezeichnet haben).
REST- und Cron-Endpunkt
- Deaktivieren Sie REST-API aktivieren, wenn Sie die öffentlichen Fahrzeug-Endpunkte nicht freigeben müssen.
- Wenn Sie den integrierten Cron-Endpunkt verwenden, bevorzugen Sie
Authorization: Bearer YOUR_TOKENgegenüber?token=…, damit das Geheimnis nicht in den Zugriffsprotokollen des Webservers erscheint. - Verwenden Sie HTTPS für jeden externen Scheduler, der den Cron-Endpunkt aufruft.
- Bevorzugen Sie auf Produktiv-Websites einen zuverlässigen System-Cron, der WP-Cron auslöst, gegenüber dem standardmäßigen Pseudo-Cron-Verhalten.
Rollen und Berechtigungen
- Gewähren Sie die Berechtigung
manage_as24_importsnur vertrauenswürdigen Benutzern. Standardmäßig wird sie der Rolleadministratorhinzugefügt. - Verwenden Sie die Plugin-Rolle
as24ci_editor(oder eine vergleichbare benutzerdefinierte Konfiguration) für Mitarbeiter, die nur Fahrzeug-Beiträge und nicht die Plugin-Einstellungen verwalten müssen. Siehe Zugriffskontrolle und Berechtigungen.
Datenschutz und Analytics
- Lassen Sie Analytics deaktiviert, bis Sie eine dokumentierte Rechtsgrundlage oder eine Consent-Integration eingerichtet haben. Siehe Hinweise zu DSGVO / GDPR und Hinweise zum revDSG.
- Halten Sie Filter-Datenminimierung aktiviert.
- Stellen Sie das Aufbewahrungsfenster für Analytics auf den niedrigsten Wert ein, der mit Ihren betrieblichen Anforderungen vereinbar ist (mindestens 7 Tage).
Formulare und Lead-Verarbeitung
- Halten Sie optionale Felder (Telefon, Nachricht) ausgeblendet, wenn Sie diese nicht benötigen.
- Konfigurieren Sie den E-Mail-Empfänger für Lead-Benachrichtigungen und überprüfen Sie, ob es sich um ein kontrolliertes Postfach handelt.
- Erwägen Sie ein SMTP-Plugin und die Abstimmung von SPF/DKIM/DMARC, um das Risiko zu verringern, dass Anfrage-E-Mails als Spam gefiltert werden.
- Löschen Sie regelmäßig Leads, die für legitime Geschäftszwecke nicht mehr benötigt werden.
KI-Assistent-Funktion
- Der KI-Assistent verwendet die verwaltete Google Gemini-Konfiguration in ADP Car Market Hub. Im WordPress-Backend ist keine Auswahl des Anbieters, des Modells oder die Eingabe eines API-Schlüssels erforderlich; die kundenspezifische KI-Bereitstellung wird nach der Installation durch AD Promotion abgeschlossen. Prompts werden über HTTPS an den verwalteten Gemini-Endpunkt gesendet.
- Schränken Sie ein, wer den KI-Assistenten konfigurieren darf, indem Sie die
Berechtigung
manage_as24_importseinschränken. - Überprüfen Sie die geltenden Datenverarbeitungs- und Vertragsbedingungen für das verwaltete KI-Setup, bevor Sie KI-Funktionen im Produktivbetrieb aktivieren.
Dateisystem und Uploads
- Stellen Sie sicher, dass das WordPress-Upload-Verzeichnis auf Ihrem Webserver nicht auflistbar ist.
- Bestätigen Sie auf Nicht-Apache-Servern (Nginx, Caddy, IIS), dass
wp-content/uploads/as24ci-logs/nicht öffentlich zugänglich ist. Das Plugin schreibt zum Schutz auf Apache eine.htaccess; auf anderen Servern müssen Betreiber eine entsprechende Regel hinzufügen. - Halten Sie PHP, WordPress, Themes und andere Plugins auf dem neuesten Stand.
Backups und Incident Response
- Beziehen Sie die WordPress-Datenbank in regelmäßige Backups ein; diese erfasst Fahrzeug-Beiträge, Leads, Analytics und Suchauftrags-Daten.
- Testen Sie die Backup-Wiederherstellung regelmäßig.
- Dokumentieren Sie einen Incident-Response-Plan, einschließlich der Deaktivierung des Cron-Endpunkts (Löschen des Cron-Tokens) und des Widerrufs des API-Client-Secrets. Um KI-Funktionen zu deaktivieren, deaktivieren Sie den KI-Assistenten über den Admin-Tab AI Assistant; der verwaltete Gemini-Schlüssel wird von AD Promotion besessen und rotiert.
Schritt für Schritt: Sicherheits-Checkliste vor dem Produktivstart
- Bestätigen Sie, dass WordPress, das Plugin und alle anderen Plugins/Themes auf ihren aktuellen stabilen Versionen sind.
- Bestätigen Sie, dass die Website über HTTPS bereitgestellt wird und dass Admin-Sitzungen auf HTTPS beschränkt sind.
- Überprüfen Sie die WordPress-Benutzerliste und -Rollen. Entfernen Sie ungenutzte Konten.
- Bestätigen Sie, dass nur vertrauenswürdige Benutzer die Berechtigung
manage_as24_importsbesitzen. - Entscheiden Sie, ob die öffentlichen REST-Routen benötigt werden. Deaktivieren Sie REST-API aktivieren, wenn nicht.
- Wenn der Cron-Endpunkt verwendet wird, generieren Sie ein langes, zufälliges Cron-Token
und rufen Sie es über
Authorization: Bearer …via HTTPS auf. - Konfigurieren Sie die E-Mail-Empfänger- und Einwilligungseinstellungen des Lead-Formulars.
- Überprüfen Sie die Analytics-Einstellungen (standardmäßig deaktiviert; falls aktiviert, legen Sie Aufbewahrung und Consent-Integration fest).
- Stellen Sie sicher, dass das Protokollverzeichnis auf Ihrem Webserver nicht öffentlich zugänglich ist.
- Erstellen Sie ein Baseline-Backup, bevor Sie live gehen.
Fehlerbehebung
- Öffentliche Benutzer können Admin-AJAX- oder Admin-POST-Handler aufrufen – überprüfen Sie, dass Sie keine Debug-Hilfen ausführen, die Berechtigungen umgehen; die Handler des Plugins verifizieren bei jeder Anfrage sowohl die Berechtigung als auch das Nonce.
- Cron-Endpunkt gibt
403 Invalid or missing tokenzurück – überprüfen Sie, ob das Cron-Token im Plugin-Admin konfiguriert ist und ob der Aufrufer es korrekt überAuthorization: Beareroder?token=übergibt. - Cron-Endpunkt gibt
403 Cron token not configuredzurück – öffnen Sie die Import-Einstellungen des Plugins und generieren / setzen Sie das Cron-Token. - Protokolle rotieren nicht – stellen Sie sicher, dass das Upload-Verzeichnis beschreibbar ist und dass WP-Cron läuft. Die Rotation wird regelmäßig überprüft (beim ersten Aufruf und danach alle 100 Aufrufe).
- Sensible Werte erscheinen in den Protokollen – der Logger maskiert bekannte Muster. Wenn eine benutzerdefinierte Integration zusätzliche Geheimnisse protokolliert, aktualisieren Sie diese Integration, um sie an der Quelle zu maskieren.