Documentazione · Documentazione tecnica

Sicurezza e permessi

Questo documento descrive il modello di sicurezza del plugin ADP Car Market Hub: quali ruoli e funzionalità WordPress introduce, come sono protette le sue interfacce di amministrazione e AJAX, e i principi che segue per la gestione degli input e delle richieste esterne.

Quando utilizzare questo documento

Leggi questo documento se hai bisogno di:

  • Decidere quale ruolo WordPress assegnare a un concessionario o a un editor di contenuti.
  • Verificare chi può visualizzare, modificare, importare o modificare le impostazioni.
  • Aggiungere un ruolo personalizzato che debba essere in grado di gestire gli annunci di veicoli senza essere un amministratore completo.
  • Verificare il livello di sicurezza delle interfacce HTTP e AJAX del plugin.

Per i dettagli sulle funzionalità e sui nonce per singolo endpoint, consulta REST API Endpoints e AJAX Actions.

Panoramica

Il plugin sovrappone due sistemi di capacità indipendenti:

  1. Capacità CPT personalizzate per gli articoli as24ci_car (capacità granulari di lettura/modifica/pubblicazione/eliminazione).
  2. Una capacità di gestione a livello di plugin (manage_as24_imports) che controlla l'accesso alle pagine di amministrazione dell'importatore, ai trigger di importazione/coda, alla pulizia delle statistiche, al flusso di lavoro dei lead e all'amministrazione di AI Assistant.

Un ruolo dedicato, as24ci_editor ("AS24 Editor"), viene creato all'attivazione. Riceve tutte le capacità CPT ma non manage_as24_imports, consentendogli di gestire i veicoli senza toccare le impostazioni dell'importatore.

Riferimento delle capacità

Capacità di gestione del plugin

CapacitàScopo
manage_as24_importsRichiesta per le schede di amministrazione dell'importatore, i trigger di importazione/coda, la procedura guidata batch, gli aggiornamenti del flusso di lavoro dei lead, la pulizia delle statistiche, l'amministrazione di AI Assistant e la scheda di supporto. Assegnata al ruolo administrator all'attivazione.

Capacità dei Custom Post Type (as24ci_car)

Il plugin mappa le seguenti capacità meta e primitive:

  • Meta capacità singolari: read_as24ci_car, edit_as24ci_car, delete_as24ci_car.
  • Capacità primitive plurali: 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.

Sia al ruolo administrator che al ruolo as24ci_editor vengono concesse tutte le capacità sopra indicate all'attivazione. Il ruolo standard WordPress editor non riceve queste capacità per impostazione predefinita.

Ruoli creati dal plugin

  • as24ci_editor — creato all'attivazione con l'etichetta AS24 Editor. Inizia con la capacità read e riceve poi tutte le capacità CPT di as24ci_car. Non riceve manage_as24_imports.
  • administrator — riceve tutte le capacità CPT di as24ci_car e manage_as24_imports. Il ruolo stesso non è creato dal plugin (fa parte di WordPress).

L'opzione as24ci_caps_version registra la versione dello schema delle capacità, consentendo ai futuri aggiornamenti del plugin di aggiungere nuove capacità ai ruoli esistenti senza riattivazione manuale.

Pattern di sicurezza Admin e AJAX

Ogni gestore AJAX di amministrazione nel plugin segue lo stesso schema:

  1. Verifica la capacità tramite current_user_can( CAP_MANAGE ). In caso di errore, risponde con HTTP 403 ed esce.
  2. Verifica il nonce tramite check_ajax_referer( <action>, 'nonce' ).
  3. Sanifica gli input (absint, sanitize_key, sanitize_text_field, ecc.).
  4. Esegue il lavoro.
  5. Restituisce wp_send_json_success() o wp_send_json_error().

Per i nonce e i requisiti di capacità per singola azione, consulta AJAX Actions.

Sicurezza REST e webhook

  • Gli endpoint pubblici opzionali per i veicoli (GET /as24ci/v1/vehicles[*]) vengono registrati solo quando l'opzione as24ci_rest_api_enabled è uguale a '1'.
  • L'endpoint di importazione tramite cron (GET /as24ci/v1/cron-import) richiede un token memorizzato in as24ci_cron_token. Il confronto del token utilizza hash_equals() per mitigare gli attacchi di temporizzazione. Preferisci l'intestazione Authorization: Bearer <token> rispetto al fallback della query-string, in modo che il token non venga scritto nei log di accesso.
  • Gli endpoint dei preferiti e delle statistiche sono pubblici per progettazione, in modo che i visitatori anonimi possano utilizzarli. Entrambi applicano la convalida dell'input e vincoli di tipo rate-limit (i preferiti sono limitati a 50 ID per chiamata; gli eventi delle statistiche devono utilizzare i nomi degli eventi consentiti).
  • I webhook in uscita firmano i payload con HMAC-SHA256 nell'intestazione X-AS24CI-Signature quando è configurato un segreto condiviso. Vedi Webhooks.

Gestione degli input ed escaping

  • Gli input dei moduli vengono sanificati tramite helper dedicati (sanitize_email, sanitize_text_field, sanitize_url, wp_kses_post per i corpi dei messaggi, absint per gli ID).
  • L'output nei template di amministrazione utilizza esc_html(), esc_attr(), esc_url() e wp_kses_post() a seconda dei casi.
  • L'accesso al database utilizza $wpdb->prepare() per le query parametrizzate; l'SQL non elaborato è limitato alle operazioni sullo schema e ai commenti di ignoranza phpcs documentati nel codice sorgente.

Istruzioni passo dopo passo

Concedere a un utente non amministratore l'amministrazione dell'importatore

  1. In WordPress, modifica il profilo utente.
  2. Aggiungi un ruolo personalizzato (o estendi l'utente) con la capacità manage_as24_imports.
  3. Salva. L'utente può ora accedere alle pagine di amministrazione dell'importatore, avviare importazioni e gestire i lead.

Consentire la creazione di veicoli senza accesso all'importatore

  1. Assegna l'utente al ruolo as24ci_editor creato dal plugin.
  2. L'utente può leggere, modificare, pubblicare ed eliminare gli articoli as24ci_car ma non può accedere all'amministrazione dell'importatore né modificare le impostazioni del plugin.

Note operative

  • manage_as24_imports è una capacità primitiva sul ruolo administrator. Rimuoverla dagli amministratori (ad esempio con un plugin personalizzato per la gestione degli utenti) bloccherà tutti gli amministratori fuori dalle schermate di amministrazione dell'importatore e dei lead.
  • Le assegnazioni delle capacità vengono scritte all'attivazione. Se un utente rimuove una capacità dopo l'attivazione, questa non viene ripristinata automaticamente. Gli aggiornamenti del plugin che introducono una nuova capacità eseguono nuovamente l'assegnazione in base all'opzione as24ci_caps_version.
  • Il plugin non blocca i flussi di accesso o password standard di WordPress. Utilizza una politica di password complesse e valuta l'autenticazione a due fattori per gli account che detengono manage_as24_imports.
  • La configurazione sensibile (credenziali client API, segreti dei webhook, il token cron) è memorizzata in wp_options. Sulle installazioni migrate alla versione dati 5, i segreti reversibili (as24ci_client_secret, as24ci_hub_api_key, as24ci_webhook_secret) sono memorizzati crittografati con AES-256-GCM tramite AS24CI\Secrets, e il token cron è memorizzato come hash HMAC con chiave. I backup del database dovrebbero comunque essere trattati come contenenti segreti. La chiave API Gemini gestita utilizzata dall'assistente AI viene fornita da server a server dalla piattaforma API e conservata crittografata da AS24CI\Ai_Credential_Manager; non viene memorizzata come opzione WordPress in chiaro né esposta nell'interfaccia utente di amministrazione.
  • Il modulo di contatto sanifica gli input e utilizza un honeypot in alcuni flussi, ma il plugin non include un CAPTCHA. Associalo a un plugin di sicurezza o anti-spam se il tuo sito è preso di mira.

Risoluzione dei problemi

  • Permission denied. quando si avvia un'importazione — l'utente non ha la capacità manage_as24_imports. Aggiungi la capacità al ruolo dell'utente.
  • Gli utenti as24ci_editor non possono modificare gli articoli dei veicoli — verifica che il ruolo abbia mantenuto le sue capacità CPT (alcuni gestori di ruoli utente rimuovono le capacità quando si modificano le etichette). Riattiva il plugin per riapplicare la mappa delle capacità, oppure esegui i relativi comandi WP-CLI.
  • L'endpoint di importazione cron restituisce sempre 403 — non è configurato alcun token o il valore fornito differisce. Genera un nuovo token dalla scheda di amministrazione Import & Limits.
  • REST /vehicles restituisce 404 — l'API REST pubblica è disabilitata. Imposta as24ci_rest_api_enabled su '1'.
  • Le firme dei webhook non corrispondono sul ricevitore — ricalcola sul ricevitore utilizzando il corpo della richiesta non elaborato e intatto e lo stesso segreto condiviso. Vedi Webhooks.

Documenti correlati