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:
- Aangepaste CPT-capabilities voor
as24ci_car-berichten (gedetailleerde capabilities voor lezen/bewerken/publiceren/verwijderen). - 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
| Capability | Doel |
|---|---|
manage_as24_imports | Vereist 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 capabilityreaden ontvangt vervolgens alleas24ci_carCPT-capabilities. Ontvangt geenmanage_as24_imports.administrator— ontvangt alleas24ci_carCPT-capabilities enmanage_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:
- Controleer de capability via
current_user_can( CAP_MANAGE ). Reageer bij mislukking met HTTP403en sluit af. - Controleer de nonce via
check_ajax_referer( <action>, 'nonce' ). - Schoon invoer op (
absint,sanitize_key,sanitize_text_field, enz.). - Voer de taak uit.
- Retourneer
wp_send_json_success()ofwp_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 optieas24ci_rest_api_enabledgelijk is aan'1'. - Het cron-import-eindpunt (
GET /as24ci/v1/cron-import) vereist een token dat is opgeslagen inas24ci_cron_token. De tokenvergelijking maakt gebruik vanhash_equals()om timing-aanvallen te verminderen. Geef de voorkeur aan de headerAuthorization: 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-Signaturewanneer 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_postvoor berichtteksten,absintvoor ID's). - Uitvoer in admin-templates maakt gebruik van
esc_html(),esc_attr(),esc_url()enwp_kses_post()waar van toepassing. - Database-toegang maakt gebruik van
$wpdb->prepare()voor geparametriseerde query's; ruwe SQL is beperkt tot schema-operaties en gedocumenteerdephpcsnegeer-instructies in de broncode.
Stapsgewijze instructies
Een niet-beheerder toegang verlenen tot het importer-beheer
- Bewerk het gebruikersprofiel in WordPress.
- Voeg een aangepaste rol toe (of breid de gebruiker uit) met de capability
manage_as24_imports. - 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
- Wijs de gebruiker toe aan de rol
as24ci_editordie door de plugin is aangemaakt. - 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_importsis een primitieve capability voor de roladministrator. 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_importsbezitten. - 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 viaAS24CI\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 doorAS24CI\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 mistmanage_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
/vehiclesretourneert404— de openbare REST API is uitgeschakeld. Stelas24ci_rest_api_enabledin 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.