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:
- Benutzerdefinierte CPT-Berechtigungen für
as24ci_car-Beiträge (granulare Lese-/Bearbeitungs-/Veröffentlichungs-/Löschberechtigungen). - 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
| Berechtigung | Zweck |
|---|---|
manage_as24_imports | Erforderlich 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 Berechtigungreadund erhält dann alleas24ci_carCPT-Berechtigungen. Erhält nichtmanage_as24_imports.administrator— erhält alleas24ci_carCPT-Berechtigungen undmanage_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:
- Berechtigung über
current_user_can( CAP_MANAGE )überprüfen. Bei Fehlschlag mit HTTP403antworten und abbrechen. - Die Nonce über
check_ajax_referer( <action>, 'nonce' )überprüfen. - Eingaben bereinigen (
absint,sanitize_key,sanitize_text_fieldusw.). - Die Arbeit ausführen.
wp_send_json_success()oderwp_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 Optionas24ci_rest_api_enabledgleich'1'ist. - Der Cron-Import-Endpunkt (
GET /as24ci/v1/cron-import) erfordert ein inas24ci_cron_tokengespeichertes Token. Der Token-Vergleich verwendethash_equals(), um Timing-Angriffe zu verhindern. Bevorzugen Sie den HeaderAuthorization: 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_postfür Nachrichtentexte,absintfür IDs). - Die Ausgabe in Admin-Templates verwendet je nach Bedarf
esc_html(),esc_attr(),esc_url()undwp_kses_post(). - Der Datenbankzugriff verwendet
$wpdb->prepare()für parametrisierte Abfragen; rohes SQL ist auf Schema-Operationen und dokumentiertephpcs-Ignorierungen im Quellcode beschränkt.
Schritt-für-Schritt-Anleitungen
Einem Nicht-Admin-Benutzer den Importer-Admin freigeben
- Bearbeiten Sie in WordPress das Benutzerprofil.
- Fügen Sie eine benutzerdefinierte Rolle hinzu (oder erweitern Sie den Benutzer) mit der Berechtigung
manage_as24_imports. - Speichern. Der Benutzer kann nun auf die Admin-Seiten des Importers zugreifen, Importe auslösen und Leads verwalten.
Fahrzeugerstellung ohne Importer-Zugriff erlauben
- Weisen Sie den Benutzer der vom Plugin erstellten Rolle
as24ci_editorzu. - 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_importsist eine primitive Berechtigung der Rolleadministrator. 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_versionerneut 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_importsbesitzen. - Sensible Konfigurationen (API-Client-Zugangsdaten, Webhook-Geheimnisse, das Cron-Token) werden in
wp_optionsgespeichert. Bei Installationen, die auf die Datenversion 5 migriert wurden, werden reversible Geheimnisse (as24ci_client_secret,as24ci_hub_api_key,as24ci_webhook_secret) überAS24CI\SecretsAES-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 vonAS24CI\Ai_Credential_Managergehalten; 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 fehltmanage_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
403zurück — es ist kein Token konfiguriert oder der angegebene Wert weicht ab. Generieren Sie ein neues Token im Admin-Tab Import & Limits. - REST
/vehiclesgibt404zurück — die öffentliche REST-API ist deaktiviert. Setzen Sieas24ci_rest_api_enabledauf'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.