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-Schnittstellen geschützt sind und welchen Prinzipien es bei der Verarbeitung von Eingaben und externen Anfragen folgt.
Wann dieses Dokument zu verwenden ist
Lesen Sie dieses Dokument, wenn Sie Folgendes tun müssen:
- Entscheiden, welche WordPress-Rolle Sie einem Händler oder Redakteur zuweisen möchten.
- Überprüfen, wer Einstellungen einsehen, bearbeiten, importieren oder ändern darf.
- Eine benutzerdefinierte Rolle hinzufügen, die in der Lage sein soll, Fahrzeugdaten zu verwalten, ohne vollständiger Administrator zu sein.
- Die Sicherheitsstruktur der HTTP- und AJAX-Schnittstellen des Plugins überprüfen.
Details zu Berechtigungen und Nonces pro Endpunkt finden Sie unter REST-API-Endpunkte und AJAX-Aktionen.
Ü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 Importer-Admin-Seiten, die Import-/Queue-Trigger, das Löschen von Analysedaten, den Lead-Workflow und die Administration des KI-Assistenten 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 Importer-Admin-Tabs, Import-/Queue-Trigger, Batch-Assistent, Lead-Workflow-Updates, Löschen von Analysedaten, KI-Assistent-Admin und Support-Tab. Wird der Rolle administrator bei der Aktivierung zugewiesen. |
Benutzerdefinierte Inhaltstyp-Berechtigungen (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 standardmäßige WordPress
editor-Rolle erhält diese Berechtigungen standardmäßig nicht.
Vom Plugin erstellte Rollen
as24ci_editor— wird bei der Aktivierung mit der Bezeichnung AS24 Editor erstellt. Beginnt mit der Berechtigungreadund erhält dann alleas24ci_car-CPT-Berechtigungen. Erhält nichtmanage_as24_imports.administrator— erhält alleas24ci_car-CPT-Berechtigungen undmanage_as24_imports. Die Rolle selbst wird nicht vom Plugin erstellt (sie ist Teil von WordPress).
Die Option as24ci_caps_version zeichnet die Version des Berechtigungsschemas
auf, sodass zukünftige Plugin-Updates bestehenden Rollen neue Berechtigungen
ohne manuelle Reaktivierung hinzufügen können.
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. - Den Nonce über
check_ajax_referer( <action>, 'nonce' )überprüfen. - Eingaben bereinigen (
absint,sanitize_key,sanitize_text_field, etc.). - Die Arbeit ausführen.
wp_send_json_success()oderwp_send_json_error()zurückgeben.
Für Nonces und Berechtigungsanforderungen pro Aktion siehe AJAX-Aktionen.
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 gespeichert wird. - Die Favoriten- und Analyse-Endpunkte sind standardmäßig öffentlich, damit anonyme Besucher sie nutzen können. Beide wenden eine Eingabevalidierung und Ratenbegrenzungs-Einschränkungen an (Favoriten sind auf 50 IDs pro Aufruf begrenzt; Analyse-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.
Eingabebehandlung 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 Importer-Admin-Seiten 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, kann jedoch nicht auf den Importer-Admin zugreifen oder Plugin-Einstellungen ändern.
Betriebshinweise
manage_as24_importsist eine primitive Berechtigung der Rolleadministrator. Das Entfernen dieser Berechtigung von Administratoren (beispielsweise mit einem benutzerdefinierten Benutzerverwaltungs-Plugin) sperrt alle Admins von den Importer- und Lead-Admin-Oberflächen aus.- 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äßigen WordPress-Anmelde- oder
Passwort-Prozesse. Verwenden Sie eine starke Passwortrichtlinie und ziehen Sie
eine Zwei-Faktor-Authentifizierung für Konten in Betracht, die
manage_as24_importsbesitzen. - Sensible Konfigurationen (API-Client-Zugangsdaten, Webhook-Geheimnisse,
das Cron-Token) werden in
wp_optionsgespeichert. Auf 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 enthielten sie Geheimnisse. Der vom KI-Assistenten 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 Antispam-Plugin, wenn Ihre Website angegriffen wird.
Fehlerbehebung
Permission denied.beim Auslösen eines Imports — dem Benutzer fehltmanage_as24_imports. Fügen Sie die Berechtigung der Rolle des Benutzers hinzu.as24ci_editor-Benutzer können Fahrzeug-Beiträ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 der Empfängerseite nicht überein — berechnen Sie diese auf der Empfängerseite neu, indem Sie den rohen, unveränderten Anfrage-Body und dasselbe Shared Secret verwenden. Siehe Webhooks.