Dokumentation · Technische Dokumentation

Sicherheit und Berechtigungen

Dieses Dokument beschreibt das Sicherheitsmodell des ADP Car Market Hub-Plugins: welche WordPress-Berechtigungen und -Rollen es einführt, wie seine Admin- und AJAX-Oberflächen geschützt sind und welchen Prinzipien es bei der Verarbeitung von Eingaben und externen Anfragen folgt.

Wann Sie dieses Dokument verwenden sollten

Lesen Sie dieses Dokument, wenn Sie:

  • Entscheiden müssen, welche WordPress-Rolle Sie einer Garage oder einem Inhaltsredaktor zuweisen möchten.
  • Überprüfen möchten, wer Einstellungen ansehen, bearbeiten, importieren oder ändern darf.
  • Eine benutzerdefinierte Rolle hinzufügen möchten, die Fahrzeugdaten verwalten kann, ohne ein vollständiger Administrator zu sein.
  • Die Sicherheitslage der HTTP- und AJAX-Oberflächen des Plugins überprüfen möchten.

Details zu den Berechtigungen und Nonces pro Endpunkt finden Sie unter REST API Endpoints und AJAX Actions.

Übersicht

Das Plugin schichtet zwei unabhängige Berechtigungssysteme:

  1. Benutzerdefinierte CPT-Berechtigungen für as24ci_car-Beiträge (granulare Lese-/Bearbeitungs-/Veröffentlichungs-/Löschberechtigungen).
  2. Eine pluginweite Verwaltungsberechtigung (manage_as24_imports), die die Admin-Seiten des Importers, die Import-/Queue-Trigger, das Löschen von Analytics-Daten, den Lead-Workflow und die Administration des AI Assistant schützt.

Eine dedizierte Rolle, as24ci_editor („AS24 Editor“), wird bei der Aktivierung erstellt. Sie erhält alle CPT-Berechtigungen, aber nicht manage_as24_imports, was es ihr ermöglicht, Fahrzeuge zu pflegen, ohne die Importer-Einstellungen zu verändern.

Berechtigungsreferenz

Plugin-Verwaltungsberechtigung

BerechtigungZweck
manage_as24_importsErforderlich für die Admin-Tabs des Importers, Import-/Queue-Trigger, den Batch-Assistenten, Aktualisierungen des Lead-Workflows, das Löschen von Analytics-Daten, die AI Assistant-Admin und den Support-Tab. Wird der Rolle administrator bei der Aktivierung zugewiesen.

Berechtigungen für benutzerdefinierte Beitragstypen (as24ci_car)

Das Plugin ordnet die folgenden Meta- und primitiven Berechtigungen zu:

  • Singuläre Meta-Berechtigungen: read_as24ci_car, edit_as24ci_car, delete_as24ci_car.
  • Plurale primitive Berechtigungen: read_private_as24ci_cars, edit_as24ci_cars, edit_others_as24ci_cars, edit_published_as24ci_cars, publish_as24ci_cars, delete_as24ci_cars, delete_others_as24ci_cars, delete_published_as24ci_cars.

Sowohl der Rolle administrator als auch der Rolle as24ci_editor werden bei der Aktivierung alle oben genannten Berechtigungen zugewiesen. Die Standard-Rolle WordPress editor erhält diese Berechtigungen standardmässig nicht.

Durch das Plugin erstellte Rollen

  • as24ci_editor — wird bei der Aktivierung mit der Bezeichnung AS24 Editor erstellt. Beginnt mit der Berechtigung read und erhält dann alle as24ci_car CPT-Berechtigungen. Erhält nicht manage_as24_imports.
  • administrator — erhält alle as24ci_car CPT-Berechtigungen und manage_as24_imports. Die Rolle selbst wird nicht durch das Plugin erstellt (sie ist Teil von WordPress).

Die Option as24ci_caps_version zeichnet die Version des Berechtigungsschemas auf, sodass zukünftige Plugin-Upgrades bestehenden Rollen neue Berechtigungen hinzufügen können, ohne dass eine manuelle Reaktivierung erforderlich ist.

Sicherheitsmuster für Admin und AJAX

Jeder Admin-AJAX-Handler im Plugin folgt demselben Muster:

  1. Berechtigung über current_user_can( CAP_MANAGE ) überprüfen. Bei Fehlschlag mit HTTP 403 antworten und abbrechen.
  2. Die Nonce über check_ajax_referer( <action>, 'nonce' ) überprüfen.
  3. Eingaben bereinigen (absint, sanitize_key, sanitize_text_field usw.).
  4. Die Arbeit ausführen.
  5. wp_send_json_success() oder wp_send_json_error() zurückgeben.

Details zu den Nonces und Berechtigungsanforderungen pro Aktion finden Sie unter AJAX Actions.

REST- und Webhook-Sicherheit

  • Die optionalen öffentlichen Fahrzeug-Endpunkte (GET /as24ci/v1/vehicles[*]) werden nur registriert, wenn die Option as24ci_rest_api_enabled gleich '1' ist.
  • Der Cron-Import-Endpunkt (GET /as24ci/v1/cron-import) erfordert ein in as24ci_cron_token gespeichertes Token. Der Token-Vergleich verwendet hash_equals(), um Timing-Angriffe zu verhindern. Bevorzugen Sie den Header Authorization: Bearer <token> gegenüber dem Query-String-Fallback, damit das Token nicht in den Zugriffsprotokollen (Access Logs) aufgezeichnet wird.
  • Die Favoriten- und Analytics-Endpunkte sind standardmässig öffentlich, damit anonyme Besucher sie nutzen können. Beide wenden eine Eingabevalidierung und Einschränkungen im Stil von Rate-Limits an (Favoriten sind auf 50 IDs pro Aufruf begrenzt; Analytics-Ereignisse müssen die erlaubten Ereignisnamen verwenden).
  • Ausgehende Webhooks signieren Payloads mit HMAC-SHA256 im Header X-AS24CI-Signature, wenn ein Shared Secret konfiguriert ist. Siehe Webhooks.

Eingabeverarbeitung und Maskierung

  • Formulareingaben werden über dedizierte Hilfsfunktionen bereinigt (sanitize_email, sanitize_text_field, sanitize_url, wp_kses_post für Nachrichtentexte, absint für IDs).
  • Die Ausgabe in Admin-Templates verwendet je nach Bedarf esc_html(), esc_attr(), esc_url() und wp_kses_post().
  • Der Datenbankzugriff verwendet $wpdb->prepare() für parametrisierte Abfragen; rohes SQL ist auf Schema-Operationen und dokumentierte phpcs-Ignorierungen im Quellcode beschränkt.

Schritt-für-Schritt-Anleitungen

Einem Nicht-Admin-Benutzer den Importer-Admin freigeben

  1. Bearbeiten Sie in WordPress das Benutzerprofil.
  2. Fügen Sie eine benutzerdefinierte Rolle hinzu (oder erweitern Sie den Benutzer) mit der Berechtigung manage_as24_imports.
  3. Speichern. Der Benutzer kann nun auf die Admin-Seiten des Importers zugreifen, Importe auslösen und Leads verwalten.

Fahrzeugerstellung ohne Importer-Zugriff erlauben

  1. Weisen Sie den Benutzer der vom Plugin erstellten Rolle as24ci_editor zu.
  2. Der Benutzer kann as24ci_car-Beiträge lesen, bearbeiten, veröffentlichen und löschen, hat aber keinen Zugriff auf den Importer-Admin und kann die Plugin-Einstellungen nicht ändern.

Betriebliche Hinweise

  • manage_as24_imports ist eine primitive Berechtigung der Rolle administrator. Wenn Sie diese von Administratoren entfernen (beispielsweise mit einem benutzerdefinierten Plugin zur Benutzerverwaltung), werden alle Administratoren von den Admin-Bereichen des Importers und der Leads ausgesperrt.
  • Berechtigungszuweisungen werden bei der Aktivierung geschrieben. Wenn ein Benutzer eine Berechtigung nach der Aktivierung entfernt, wird sie nicht automatisch wiederhergestellt. Plugin-Upgrades, die eine neue Berechtigung einführen, führen die Zuweisung basierend auf der Option as24ci_caps_version erneut aus.
  • Das Plugin blockiert nicht die standardmässigen WordPress-Anmelde- oder Passwort-Abläufe. Verwenden Sie eine starke Passwortrichtlinie und ziehen Sie eine Zwei-Faktor-Authentisierung für Konten in Betracht, die manage_as24_imports besitzen.
  • Sensible Konfigurationen (API-Client-Zugangsdaten, Webhook-Geheimnisse, das Cron-Token) werden in wp_options gespeichert. Bei Installationen, die auf die Datenversion 5 migriert wurden, werden reversible Geheimnisse (as24ci_client_secret, as24ci_hub_api_key, as24ci_webhook_secret) über AS24CI\Secrets AES-256-GCM-verschlüsselt gespeichert, und das Cron-Token wird als keyed HMAC-Hash gespeichert. Datenbank-Backups sollten dennoch so behandelt werden, als ob sie Geheimnisse enthalten. Der vom AI Assistant verwendete verwaltete Gemini-API-Schlüssel wird Server-zu-Server von der API-Plattform bereitgestellt und verschlüsselt von AS24CI\Ai_Credential_Manager gehalten; er wird nicht als Klartext-WordPress-Option gespeichert oder in der Admin-Benutzeroberfläche offengelegt.
  • Das Kontaktformular bereinigt Eingaben und verwendet in einigen Abläufen ein Honeypot, aber das Plugin enthält kein CAPTCHA. Kombinieren Sie es mit einem Sicherheits- oder Anti-Spam-Plugin, wenn Ihre Website angegriffen wird.

Fehlerbehebung

  • Permission denied. beim Auslösen eines Imports — dem Benutzer fehlt manage_as24_imports. Fügen Sie die Berechtigung zur Rolle des Benutzers hinzu.
  • as24ci_editor-Benutzer können Fahrzeugbeiträge nicht bearbeiten — überprüfen Sie, ob die Rolle ihre CPT-Berechtigungen behalten hat (einige Benutzerrollen-Manager entfernen Berechtigungen beim Ändern von Bezeichnungen). Reaktivieren Sie das Plugin, um die Berechtigungszuordnung erneut anzuwenden, oder führen Sie die entsprechenden WP-CLI-Befehle aus.
  • Cron-Import-Endpunkt gibt immer 403 zurück — es ist kein Token konfiguriert oder der angegebene Wert weicht ab. Generieren Sie ein neues Token im Admin-Tab Import & Limits.
  • REST /vehicles gibt 404 zurück — die öffentliche REST-API ist deaktiviert. Setzen Sie as24ci_rest_api_enabled auf '1'.
  • Webhook-Signaturen stimmen auf dem Empfänger nicht überein — berechnen Sie diese auf dem Empfänger neu, indem Sie den rohen, unveränderten Request-Body und dasselbe Shared Secret verwenden. Siehe Webhooks.

Verwandte Dokumente