Documentatie · Technische documentatie

Beveiliging en capabilities

Dit document beschrijft het beveiligingsmodel van de ADP Car Market Hub plugin: welke WordPress capabilities en rollen deze introduceert, hoe de admin- en AJAX-oppervlakken zijn beveiligd en welke principes worden gevolgd voor invoerverwerking en externe verzoeken.

Wanneer u dit document moet gebruiken

Lees dit document als u het volgende moet doen:

  • Beslissen welke WordPress rol u moet toewijzen aan een dealer of contentredacteur.
  • Controleren wie instellingen kan bekijken, bewerken, importeren of wijzigen.
  • Een aangepaste rol toevoegen die voertuigadvertenties moet kunnen beheren zonder een volledige beheerder te zijn.
  • De beveiligingsstatus van de HTTP- en AJAX-oppervlakken van de plugin controleren.

Zie REST API-eindpunten en AJAX-acties voor details over capabilities en nonces per eindpunt.

Overzicht

De plugin maakt gebruik van twee onafhankelijke capability-systemen:

  1. Aangepaste CPT-capabilities voor as24ci_car-berichten (gedetailleerde capabilities voor lezen/bewerken/publiceren/verwijderen).
  2. Een plugin-brede beheercapability (manage_as24_imports) die de toegang regelt tot de beheerpagina's van de importer, de import-/wachtrij-triggers, het opschonen van analytics, de lead-werkstroom en het beheer van de AI Assistant.

Bij activering wordt een speciale rol, as24ci_editor ("AS24 Editor"), aangemaakt. Deze ontvangt alle CPT-capabilities, maar niet manage_as24_imports, waardoor deze rol voertuigen kan onderhouden zonder de instellingen van de importer te wijzigen.

Capabilities-referentie

Plugin-beheercapability

CapabilityDoel
manage_as24_importsVereist voor de beheertabbladen van de importer, import-/wachtrij-triggers, de batch-wizard, updates van de lead-werkstroom, het opschonen van analytics, het beheer van de AI Assistant en het tabblad Support. Toegewezen aan de rol administrator bij activering.

Custom Post Type-capabilities (as24ci_car)

De plugin mapt de volgende meta- en primitieve capabilities:

  • Enkelvoudige meta-caps: read_as24ci_car, edit_as24ci_car, delete_as24ci_car.
  • Meervoudige primitieve caps: 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.

Zowel de rol administrator als de rol as24ci_editor krijgt al het bovenstaande toegewezen bij activering. De standaard WordPress editor-rol ontvangt deze capabilities bewust niet.

Rollen die door de plugin worden aangemaakt

  • as24ci_editor — aangemaakt bij activering met het label AS24 Editor. Begint met de capability read en ontvangt vervolgens alle as24ci_car CPT-capabilities. Ontvangt geen manage_as24_imports.
  • administrator — ontvangt alle as24ci_car CPT-capabilities en manage_as24_imports. De rol zelf wordt niet door de plugin aangemaakt (deze maakt deel uit van WordPress).

De optie as24ci_caps_version registreert de versie van het capability-schema, waardoor toekomstige plugin-upgrades nieuwe caps aan bestaande rollen kunnen toevoegen zonder handmatige heractivering.

Beveiligingspatroon voor Admin en AJAX

Elke admin AJAX-handler in de plugin volgt dezelfde structuur:

  1. Controleer de capability via current_user_can( CAP_MANAGE ). Reageer bij mislukking met HTTP 403 en sluit af.
  2. Controleer de nonce via check_ajax_referer( <action>, 'nonce' ).
  3. Schoon invoer op (absint, sanitize_key, sanitize_text_field, enz.).
  4. Voer de taak uit.
  5. Retourneer wp_send_json_success() of wp_send_json_error().

Zie AJAX-acties voor nonces en capability-vereisten per actie.

REST- en webhook-beveiliging

  • De optionele openbare voertuigeindpunten (GET /as24ci/v1/vehicles[*]) worden alleen geregistreerd wanneer de optie as24ci_rest_api_enabled gelijk is aan '1'.
  • Het cron-import-eindpunt (GET /as24ci/v1/cron-import) vereist een token dat is opgeslagen in as24ci_cron_token. De tokenvergelijking maakt gebruik van hash_equals() om timing-aanvallen te verminderen. Geef de voorkeur aan de header Authorization: Bearer <token> boven de query-string fallback, zodat het token niet in de toegangslogs wordt geschreven.
  • De eindpunten voor favorieten en analytics zijn bewust openbaar, zodat anonieme bezoekers ze kunnen gebruiken. Beide passen invoervalidatie en limieten toe (favorieten zijn beperkt tot 50 ID's per aanroep; analytics-gebeurtenissen moeten de toegestane gebeurtenisnamen gebruiken).
  • Uitgaande webhooks ondertekenen payloads met HMAC-SHA256 in de header X-AS24CI-Signature wanneer er een gedeeld geheim is geconfigureerd. Zie Webhooks.

Invoerverwerking en escaping

  • Formulierinvoer wordt opgeschoond via speciale hulpprogramma's (sanitize_email, sanitize_text_field, sanitize_url, wp_kses_post voor berichtteksten, absint voor ID's).
  • Uitvoer in admin-templates maakt gebruik van esc_html(), esc_attr(), esc_url() en wp_kses_post() waar van toepassing.
  • Database-toegang maakt gebruik van $wpdb->prepare() voor geparametriseerde query's; ruwe SQL is beperkt tot schema-operaties en gedocumenteerde phpcs negeer-instructies in de broncode.

Stapsgewijze instructies

Een niet-beheerder toegang verlenen tot het importer-beheer

  1. Bewerk het gebruikersprofiel in WordPress.
  2. Voeg een aangepaste rol toe (of breid de gebruiker uit) met de capability manage_as24_imports.
  3. Sla de wijzigingen op. De gebruiker heeft nu toegang tot de beheerpagina's van de importer, kan imports starten en leads beheren.

Voertuigen laten beheren zonder toegang tot de importer

  1. Wijs de gebruiker toe aan de rol as24ci_editor die door de plugin is aangemaakt.
  2. De gebruiker kan as24ci_car-berichten lezen, bewerken, publiceren en verwijderen, maar heeft geen toegang tot het beheer van de importer en kan de plugin-instellingen niet wijzigen.

Operationele opmerkingen

  • manage_as24_imports is een primitieve capability voor de rol administrator. Als u deze verwijdert bij beheerders (bijvoorbeeld met een aangepaste plugin voor gebruikersbeheer), worden alle beheerders buitengesloten van de beheerpagina's van de importer en leads.
  • Toewijzingen van capabilities worden weggeschreven bij activering. Als een gebruiker een capability verwijdert na activering, wordt deze niet automatisch hersteld. Plugin-upgrades die een nieuwe capability introduceren, voeren de toewijzing opnieuw uit op basis van de optie as24ci_caps_version.
  • De plugin blokkeert de standaard WordPress inlog- of wachtwoordstromen niet. Gebruik een sterk wachtwoordbeleid en overweeg tweestapsverificatie voor accounts die manage_as24_imports bezitten.
  • Gevoelige configuratie (API-clientgegevens, webhook-geheimen, het cron-token) wordt opgeslagen in wp_options. Op installaties die zijn gemigreerd naar gegevensversie 5, worden omkeerbare geheimen (as24ci_client_secret, as24ci_hub_api_key, as24ci_webhook_secret) AES-256-GCM-versleuteld opgeslagen via AS24CI\Secrets, en het cron-token wordt opgeslagen als een keyed HMAC-hash. Databaseback-ups moeten nog steeds worden behandeld alsof ze geheimen bevatten. De beheerde Gemini API-sleutel die door de AI Assistant wordt gebruikt, wordt server-to-server geleverd door het API Platform en versleuteld bewaard door AS24CI\Ai_Credential_Manager; deze wordt niet opgeslagen als een platte tekst WordPress optie of getoond in de admin-UI.
  • Het contactformulier schoont invoer op en gebruikt in sommige stromen een honeypot, maar de plugin bevat geen ingebouwde CAPTCHA. Combineer deze met een beveiligings- of antispam-plugin als uw site het doelwit is.

Problemen oplossen

  • Permission denied. bij het starten van een import — de gebruiker mist manage_as24_imports. Voeg de capability toe aan de rol van de gebruiker.
  • as24ci_editor-gebruikers kunnen voertuigberichten niet bewerken — controleer of de rol zijn CPT-capabilities heeft behouden (sommige plug-ins voor gebruikersrollen wissen caps bij het wijzigen van labels). Activeer de plugin opnieuw om de capability-mapping opnieuw toe te passen, of voer de relevante WP-CLI-commando's uit.
  • Cron-import-eindpunt retourneert altijd 403 — er is geen token geconfigureerd of de opgegeven waarde verschilt. Genereer een nieuw token via het tabblad Import & Limieten in het beheer.
  • REST /vehicles retourneert 404 — de openbare REST API is uitgeschakeld. Stel as24ci_rest_api_enabled in op '1'.
  • Webhook-handtekeningen komen niet overeen bij de ontvanger — bereken deze opnieuw aan de kant van de ontvanger met behulp van de ruwe, ongewijzigde verzoektekst en hetzelfde gedeelde geheim. Zie Webhooks.

Gerelateerde documenten