Documentazione · Privacy, sicurezza e conformità

Raccomandazioni sulla sicurezza

Questo documento raccoglie raccomandazioni pratiche sulla sicurezza per i siti che eseguono il plugin ADP Car Market Hub. Si concentra sull'hardening operativo, sulle protezioni integrate del plugin e sui controlli che i gestori dei siti dovrebbero configurare in aggiunta all'hardening standard di WordPress.

Questo documento non sostituisce un audit di sicurezza completo e non garantisce che il sito sia privo di vulnerabilità. I gestori dei siti dovrebbero verificare la loro configurazione di hosting, la configurazione di WordPress e le integrazioni di terze parti con uno specialista di sicurezza qualificato, laddove opportuno.

Quando utilizzare questo documento

Utilizza questo documento quando hai bisogno di:

  • Preparare per l'ambiente di produzione un sito che utilizza il plugin.
  • Esaminare i controlli di sicurezza integrati del plugin.
  • Pianificare misure di sicurezza operative (credenziali, cron, logging, backup).
  • Rispondere a una revisione o a un questionario di sicurezza interno.

Panoramica

Il plugin si affida alle primitive di sicurezza standard di WordPress:

  • Permessi di WordPress (permesso personalizzato del plugin manage_as24_imports per le azioni di gestione; permessi per CPT per i post dei veicoli).
  • Nonce di WordPress su ogni modulo di amministrazione, azione AJAX e gestore POST di amministrazione.
  • Helper standard di sanificazione ed escaping di WordPress (sanitize_*, wp_kses_post, esc_*, wp_unslash).
  • Transient di WordPress per lo stato a breve termine (limiti di frequenza, blocchi di esecuzione).
  • TLS esistente del sito, protezione del login, permessi dei file e sicurezza del database.

Il plugin aggiunge diverse protezioni specifiche per le funzionalità sopra queste primitive, elencate nella sezione successiva.

Protezioni integrate

I comportamenti descritti di seguito riflettono ciò che il codice del plugin implementa oggi. Verificali nella versione corrente del plugin prima di fare affidamento su di essi nella documentazione formale sulla sicurezza.

Autenticazione e autorizzazione

  • Le pagine di amministrazione e i gestori POST verificano il permesso di gestione del plugin (manage_as24_imports) prima di elaborare qualsiasi modifica di stato.
  • Gli endpoint AJAX di amministrazione nel plugin verificano un nonce tramite check_ajax_referer.
  • Gli invii dei moduli di amministrazione utilizzano check_admin_referer con azioni nonce specifiche per il modulo.
  • I permessi personalizzati sono mappati per il post type as24ci_car con map_meta_cap = true, in modo che i permessi per singolo post seguano il meccanismo meta-cap di WordPress.

Superficie delle REST API

  • Le rotte REST pubbliche dei veicoli (/wp-json/as24ci/v1/vehicles e /wp-json/as24ci/v1/vehicles/{id}) vengono registrate solo quando l'opzione Enable REST API è attiva. Utilizzano un permission_callback di __return_true, il che significa che i dati che restituiscono sono destinati a essere pubblici in sola lettura. Disattiva l'opzione se non desideri esporre questa superficie.
  • L'endpoint di importazione cron (/wp-json/as24ci/v1/cron-import) registra una rotta pubblica ma esegue l'autenticazione basata su token all'interno della callback. Il token viene confrontato con hash_equals (confronto a tempo costante) ed è richiesto a ogni chiamata.
  • Il token cron può essere fornito come intestazione Authorization: Bearer (preferito — mantiene il token fuori dai log di accesso) o come parametro di query ?token=.

Token cron

  • Il token cron viene gestito dalle impostazioni di importazione del plugin ed è memorizzato nell'opzione as24ci_cron_token come hash HMAC-SHA256 unidirezionale, in modo che il testo in chiaro non possa essere recuperato da un dump del database. Il valore in chiaro è disponibile nell'interfaccia utente di amministrazione solo per una breve finestra di visualizzazione (circa 15 minuti) immediatamente dopo la generazione o rigenerazione del token; dopo tale finestra l'amministratore può solo rigenerare un nuovo token, non rivelare quello precedente.
  • L'endpoint rifiuta le richieste quando non è configurato alcun token.

Anti-abuso del modulo di contatto

  • Ogni invio deve contenere il nonce as24ci_contact_form.
  • Un campo honeypot nascosto website rifiuta silenziosamente gli invii automatizzati senza produrre un errore visibile.
  • Viene applicato un limite di frequenza di 5 invii per IP ogni 5 minuti tramite un transient di WordPress. L'indirizzo IP viene sottoposto a hashing con wp_salt('auth') prima dell'uso e non viene memorizzato con il lead.
  • Il campo del messaggio viene filtrato con wp_kses_post.

Token degli avvisi di ricerca

  • Ogni iscrizione ha un token crittograficamente casuale di 64 caratteri utilizzato sia per il link di conferma che per il link di disiscrizione.
  • La conferma sposta semplicemente una riga da pending a active; gli utilizzi successivi non modificano nuovamente lo stato.

Logger e mascheramento dei segreti

  • Il logger del plugin scrive su un file all'interno di una sottodirectory dedicata della cartella uploads di WordPress (as24ci-logs/).
  • Al momento della creazione, la directory è protetta da un file .htaccess che nega qualsiasi accesso (solo Apache) e da un file index.php vuoto.
  • Prima di scrivere ogni riga, il messaggio viene sanificato per mascherare i frammenti di token=…, client_secret=… e Authorization: Bearer … (difesa in profondità).
  • I log ruotano a 10 MB e i file ruotati più vecchi di 7 giorni vengono eliminati automaticamente.
  • Sui server che non rispettano .htaccess (Nginx, Caddy, IIS), l'esposizione della directory di caricamento dipende dalla configurazione del server web. I gestori dovrebbero assicurarsi che l'accesso diretto a wp-content/uploads/as24ci-logs/ sia bloccato su tali server.

Dati alla disinstallazione

  • Le tabelle di analytics e degli agenti di ricerca vengono eliminate incondizionatamente al momento della disinstallazione, in modo che i dati di tracciamento dei visitatori e gli indirizzi email degli iscritti non persistano dopo la rimozione del plugin.
  • L'impostazione opzionale Delete data on uninstall rimuove anche i post dei veicoli, i post dei lead, le pagine del plugin e gli allegati importati.

Azioni raccomandate per il gestore

Le raccomandazioni seguenti combinano l'hardening standard di WordPress con la configurazione specifica del plugin.

Credenziali e segreti

  • Tratta il client secret dell'API di AutoScout24 e il token cron come segreti sensibili. Sono memorizzati come opzioni di WordPress ma sono protetti a riposo dall'helper centralizzato dei segreti del plugin: il client secret è crittografato con AES-256-GCM autenticato (chiave derivata dai salt di WordPress tramite HKDF-SHA256), e il token cron è memorizzato come hash HMAC-SHA256 unidirezionale in modo che il testo in chiaro non possa essere recuperato da un dump del database. Si applica comunque l'hardening standard del database di WordPress. La chiave API gestita di Gemini utilizzata dall'AI Assistant è configurata da AD Promotion in AS24CI\Ai_Config e non è memorizzata come opzione di WordPress né esposta nell'interfaccia di amministrazione.
  • Limita l'accesso al database agli amministratori e assicurati che wp-config.php non sia leggibile da tutti.
  • Rigenera il token cron se c'è motivo di sospettare che sia stato esposto (ad esempio tramite i log di accesso che hanno registrato il parametro di query ?token=).

REST ed endpoint cron

  • Disattiva Enable REST API se non hai bisogno di esporre gli endpoint pubblici dei veicoli.
  • Quando utilizzi l'endpoint cron integrato, preferisci Authorization: Bearer YOUR_TOKEN rispetto a ?token=… in modo che il segreto non appaia nei log di accesso del server web.
  • Utilizza HTTPS per qualsiasi pianificatore esterno che chiama l'endpoint cron.
  • Preferisci un cron di sistema affidabile che attiva WP-Cron rispetto al comportamento pseudo-cron predefinito sui siti di produzione.

Ruoli e permessi

  • Concedi il permesso manage_as24_imports solo agli utenti fidati. Per impostazione predefinita, viene aggiunto al ruolo administrator.
  • Utilizza il ruolo as24ci_editor del plugin (o una configurazione personalizzata analoga) per il personale che deve solo gestire i post dei veicoli e non le impostazioni del plugin. Vedi Controllo degli accessi e permessi.

Privacy e analytics

  • Mantieni disattivati i dati di analytics finché non disponi di una base giuridica documentata o di un'integrazione del consenso attiva. Vedi le Note su GDPR / DSGVO e le Note su revDSG.
  • Mantieni abilitata l'opzione Filter data minimization.
  • Imposta la finestra di conservazione dei dati di analytics sul valore più basso compatibile con le tue esigenze operative (minimo 7 giorni).

Moduli e gestione dei lead

  • Mantieni nascosti i campi opzionali (Telefono, Messaggio) se non ne hai bisogno.
  • Configura il destinatario dell'email di notifica dei lead e verifica che si tratti di una casella di posta controllata.
  • Prendi in considerazione un plugin SMTP e l'allineamento SPF/DKIM/DMARC per ridurre il rischio che le email di richiesta vengano filtrate come spam.
  • Elimina periodicamente i lead che non sono più necessari per scopi commerciali legittimi.

Funzionalità AI Assistant

  • L'AI Assistant utilizza la configurazione gestita di Google Gemini in ADP Car Market Hub. Non è richiesta alcuna selezione del provider, selezione del modello o inserimento della chiave API nel backend di WordPress; il provisioning dell'IA specifico per il cliente viene completato da AD Promotion dopo l'installazione. I prompt vengono inviati all'endpoint gestito di Gemini tramite HTTPS.
  • Limita chi può configurare l'AI Assistant limitando il permesso manage_as24_imports.
  • Esamina il trattamento dei dati applicabile e i termini contrattuali per la configurazione dell'IA gestita prima di abilitare le funzionalità di IA in produzione.

File system e caricamenti

  • Verifica che la directory dei caricamenti di WordPress non sia elencabile sul tuo server web.
  • Sui server non Apache (Nginx, Caddy, IIS), conferma che wp-content/uploads/as24ci-logs/ non sia accessibile pubblicamente. Il plugin scrive un file .htaccess per la protezione su Apache; su altri server i gestori devono aggiungere una regola equivalente.
  • Mantieni aggiornati PHP, WordPress, i temi e gli altri plugin.

Backup e risposta agli incidenti

  • Includi il database di WordPress nei backup regolari; questo acquisisce i post dei veicoli, i lead, i dati di analytics e i dati degli avvisi di ricerca.
  • Verifica periodicamente il ripristino dei backup.
  • Documenta un piano di risposta agli incidenti, incluso come disabilitare l'endpoint cron (cancellando il token cron) e revocare il client secret dell'API. Per disabilitare le funzionalità di IA, disattiva l'AI Assistant dalla scheda di amministrazione AI Assistant; la chiave gestita di Gemini è di proprietà di AD Promotion e viene da essa ruotata.

Passo dopo passo: lista di controllo per la sicurezza pre-produzione

  1. Conferma che WordPress, il plugin e tutti gli altri plugin/temi siano alle loro versioni stabili correnti.
  2. Conferma che il sito sia servito tramite HTTPS e che le sessioni di amministrazione siano limitate a HTTPS.
  3. Esamina l'elenco degli utenti e i ruoli di WordPress. Rimuovi gli account inutilizzati.
  4. Conferma che solo gli utenti fidati dispongano del permesso manage_as24_imports.
  5. Decidi se le rotte REST pubbliche sono necessarie. In caso contrario, disattiva Enable REST API.
  6. Se viene utilizzato l'endpoint cron, genera un token cron lungo e casuale e chiamalo tramite Authorization: Bearer … su HTTPS.
  7. Configura l'email del destinatario del modulo lead e le impostazioni del consenso.
  8. Esamina le impostazioni di analytics (disattivate per impostazione predefinita; se abilitate, imposta la conservazione e l'integrazione del consenso).
  9. Verifica che la directory dei log non sia accessibile pubblicamente sul tuo server web.
  10. Esegui un backup di base prima di andare online.

Risoluzione dei problemi

  • Gli utenti pubblici possono chiamare i gestori AJAX o POST di amministrazione — verifica di non utilizzare helper di debug che aggirano i permessi; i gestori del plugin verificano sia il permesso che il nonce su ogni richiesta.
  • L'endpoint cron restituisce 403 Invalid or missing token — verifica che il token cron sia configurato nell'amministrazione del plugin e che il chiamante lo fornisca correttamente tramite Authorization: Bearer o ?token=.
  • L'endpoint cron restituisce 403 Cron token not configured — apri le impostazioni di importazione del plugin e genera / imposta il token cron.
  • I log non ruotano — conferma che la directory dei caricamenti sia scrivibile e che WP-Cron sia in esecuzione. La rotazione viene controllata periodicamente (alla prima chiamata e successivamente ogni 100 chiamate).
  • I valori sensibili appaiono nei log — il logger maschera i pattern noti. Se un'integrazione personalizzata registra ulteriori segreti, aggiorna tale integrazione per mascherarli alla fonte.

Documenti correlati