PS PrestaShop Intermedio

Security Headers: intestazioni di sicurezza e CSP per PrestaShop 8 e 9

Installare e configurare Security Headers: modalità test, CSP e violazioni, nonce e voto A+, HSTS, Permissions-Policy, scanner, avvisi e cronologia.

Aggiornato Versione del modulo 1.1.0

DataFirefly Security Headers invia le intestazioni di sicurezza HTTP da PrestaShop 8 e 9: Content-Security-Policy, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy e Cross-Origin-Opener-Policy. Il modulo si configura in Parametri avanzati > Intestazioni di sicurezza, organizzato in sei schede: Dashboard, Generale e modalità test, Content-Security-Policy, HSTS e altre intestazioni, Permissions-Policy e Violazioni CSP.

Installazione

  1. In Moduli > Gestione moduli, fai clic su Carica un modulo e invia il file ZIP.
  2. Il modulo si installa in modalità test, con la CSP in Report-Only e la raccolta delle violazioni attiva: nessun visitatore viene bloccato.
  3. Apri Parametri avanzati > Intestazioni di sicurezza. Il link Configura della gestione moduli porta nello stesso punto.

Messa in produzione passo dopo passo

La checklist Messa in produzione della dashboard segue questi passaggi e ne mostra lo stato.

  1. Dichiara i dispositivi di test. Scheda Generale e modalità test: fai clic su Aggiungi il mio indirizzo IP, oppure copia il link di test e aprilo sul telefono.
  2. Spunta i servizi che usi nella scheda Content-Security-Policy, blocco Servizi di terze parti.
  3. Naviga nel negozio da un dispositivo di test: home, categoria, scheda prodotto, carrello, processo di acquisto fino al pagamento, account cliente. Le violazioni compaiono nella scheda Violazioni CSP entro pochi minuti.
  4. Gestisci le violazioni: consenti le sorgenti legittime, ignora le altre.
  5. Passa la CSP in modalità Applica quando per 24 ore non compaiono nuove violazioni.
  6. Fai clic su Anteprima produzione nella dashboard per vedere il voto senza modalità test, poi disattiva la modalità test.
  7. Verifica su uno scanner pubblico come securityheaders.com o Mozilla Observatory, dopo aver svuotato la cache del CDN se ne usi uno.

La modalità test

Finché la modalità test è attiva, ogni richiesta riceve uno di questi trattamenti:

  • Dispositivi di test (IP dell’elenco o browser aperto con il link di test): tutte le intestazioni, CSP applicata qualunque sia la modalità scelta, HSTS limitato a 5 minuti e senza preload.
  • Altri visitatori: solo la CSP in Report-Only, se la raccolta delle violazioni è attiva. Non viene bloccato nulla, ma i loro browser segnalano cosa verrebbe bloccato.

Una volta disattivata la modalità test, tutti i visitatori ricevono la configurazione completa.

L’elenco degli IP accetta indirizzi IPv4 e IPv6 e intervalli CIDR, uno per riga. Il link di test segna il browser che lo apre come dispositivo di test per 24 ore, comodo per un telefono in 4G il cui IP cambia. Apri lo stesso indirizzo con ?dfsh_test=off per interrompere prima. Crea un nuovo link invalida i link precedenti.

L’opzione Applica al back-office invia HSTS, X-Frame-Options in SAMEORIGIN, X-Content-Type-Options e Referrer-Policy nel back-office. La CSP e la Permissions-Policy non vi vengono mai applicate.

Content-Security-Policy

Direttive

Ogni direttiva accetta sorgenti separate da spazi o a capo: parole chiave ('self', 'none', 'unsafe-inline', 'unsafe-eval'), host (https://www.example.com, *.example.com), schemi (data:, https:), nonce e hash. Le virgolette mancanti attorno alle parole chiave vengono aggiunte. Un valore non valido viene scartato e segnalato al salvataggio. Una direttiva di caricamento vuota ricade su default-src; le altre direttive vuote non vengono inviate.

Servizi di terze parti

Ogni servizio spuntato aggiunge i suoi domini alle direttive necessarie, senza modificare le tue voci: Google Analytics 4 e Tag Manager, Google Ads, Google Fonts, reCAPTCHA, Google Maps, YouTube, Vimeo, Meta Pixel, TikTok, Pinterest, Stripe, PayPal, Mollie, Cookiebot, Axeptio, Hotjar, Microsoft Clarity, Trustpilot e Crisp. I fornitori cambiano a volte i domini: controlla la scheda delle violazioni dopo aver attivato un servizio.

Opzioni

  • Includi i server multimediali: aggiunge i server impostati in Parametri avanzati > Prestazioni alle direttive per immagini, script, stili, font e media.
  • Aggiorna le richieste non sicure: invia upgrade-insecure-requests in modalità Applica, su un negozio in https.
  • URL esclusi dalla CSP: un frammento di URL per riga. La CSP non viene inviata quando l’indirizzo richiesto ne contiene uno, ad esempio una pagina di ritorno dal pagamento problematica.

Nonce e voto A+

La configurazione predefinita mantiene 'unsafe-inline' in script-src, perché i temi PrestaShop usano script inline. Gli scanner limitano allora il voto ad A. Per puntare ad A+:

  1. Nel blocco CSP rigorosa con nonce, attiva Aggiungi un nonce agli script con la modalità test attiva.
  2. Il modulo genera un nonce casuale a ogni pagina, lo aggiunge a tutti i tag <script> e rimuove 'unsafe-inline' da script-src.
  3. Naviga nel negozio e gestisci le violazioni. Gli script inseriti in seguito da JavaScript senza nonce compaiono nel registro, ad esempio i tag HTML personalizzati di Google Tag Manager, che devono usare la variabile nonce di GTM.
  4. Quando il registro non mostra più violazioni eval, rimuovi 'unsafe-eval' da script-src.

L’opzione Mantieni i gestori di eventi inline aggiunge script-src-attr 'unsafe-inline' perché gli attributi onclick continuino a funzionare. Lasciala attiva a meno che il tuo tema e i tuoi moduli non ne usino; alcuni scanner pubblici la segnalano.

Un modulo di cache a pagina intera salva l’HTML con il nonce del primo visitatore, che non corrisponde più ai successivi. Escludi quelle pagine dalla cache o lascia il nonce disattivato. La cache nativa di PrestaShop non è interessata.

Per gli sviluppatori: il nonce della pagina è disponibile in Smarty come {$dfsh_nonce} e in PHP con DfSecurityHeaders::getNonce(). Viene aggiunto automaticamente ai tag script dell’output HTML; questi accessi servono per codice prodotto al di fuori di quell’output.

Registro delle violazioni

I report dei browser sono raggruppati per direttiva e sorgente bloccata, con il numero di occorrenze, la data dell’ultima segnalazione, una pagina di esempio e, per il codice inline, i suoi primi caratteri. Le estensioni del browser vengono ignorate. Gli URL sono salvati senza parametri e non viene conservato alcun IP.

  • Consenti aggiunge la sorgente alla direttiva interessata. Se la direttiva era vuota, prende prima le sorgenti di default-src.
  • Ignora rimuove la riga senza modificare la CSP.
  • Le caselle di selezione permettono di Consentire la selezione o Ignorare la selezione. I pulsanti delle direttive e il campo di ricerca filtrano l’elenco.

Consentire una violazione inline o eval aggiunge 'unsafe-inline' o 'unsafe-eval', il che indebolisce la policy: è meglio spostare lo script in un file. Con il nonce attivo, gli script inline senza nonce non possono essere consentiti automaticamente. Le violazioni non rilevate da 30 giorni vengono eliminate automaticamente.

HSTS e altre intestazioni

  • HSTS: durata da 5 minuti a 2 anni, 1 anno per impostazione predefinita. I browser memorizzano l’intestazione per tutta la durata e rifiutano http. includeSubDomains forza https su tutti i sottodomini: attivalo solo se tutti lo supportano. preload viene inviato solo con includeSubDomains e almeno 1 anno; invia il dominio a hstspreload.org solo se sei sicuro, la rimozione richiede mesi.
  • X-Frame-Options: si consiglia SAMEORIGIN; DENY blocca anche gli iframe del tuo negozio.
  • X-Content-Type-Options: invia nosniff.
  • Referrer-Policy: strict-origin-when-cross-origin per impostazione predefinita.
  • Cross-Origin-Opener-Policy: disattivata per impostazione predefinita; same-origin-allow-popups mantiene funzionanti le finestre di pagamento di PayPal.
  • Rimuovi l’intestazione X-Powered-By nasconde la versione di PHP esposta da alcuni server.

Permissions-Policy

Per ciascuna delle 19 funzioni: Bloccato la disattiva ovunque, Solo questo sito la consente sul tuo dominio e sulle origini aggiuntive inserite, Tutti i siti la apre, Non impostato mantiene il comportamento del browser. Le funzioni che a un negozio non servono (fotocamera, microfono, geolocalizzazione, sensori, USB…) sono bloccate per impostazione predefinita, e payment è limitato al sito. Il servizio Stripe aggiunge la propria origine a payment.

Scanner e voto

Analizza le intestazioni attuali richiede una pagina del negozio dal server e mostra il voto, il dettaglio per intestazione, le fughe di informazioni e le intestazioni grezze. Si possono analizzare solo i domini del negozio. Anteprima produzione simula la configurazione senza modalità test. Il voto segue la stessa ponderazione degli scanner pubblici e resta indicativo. L’ultima analisi e la cronologia dei voti restano visibili dopo il ricaricamento.

Avvisi di blocco

Nella scheda Generale e modalità test, attiva gli Avvisi via email e inserisci fino a 5 destinatari. Con la CSP applicata e la modalità test disattivata, ogni risorsa realmente bloccata mai vista prima genera un’email con direttiva, sorgente e pagina. Le novità vengono raggruppate, al massimo un’email all’ora. Invia un’email di prova verifica la configurazione; se non arriva nulla, controlla Parametri avanzati > Email.

Cronologia, esportazione e importazione

Ogni modifica conserva le impostazioni precedenti, con data, dipendente e differenze rispetto allo stato attuale. Vengono conservate le ultime 15 versioni; Ripristina torna a una di esse, e lo stato sostituito entra nella cronologia.

Scarica le impostazioni produce un file JSON senza i token segreti, da importare in un altro negozio, ad esempio dallo staging alla produzione. Un’importazione attiva sempre la modalità test. Anche gli IP di test vengono importati: controllali.

Cache, CDN e intestazioni del server

  • Un CDN o una cache di pagina può servire intestazioni vecchie: svuotala dopo ogni modifica.
  • Se il tuo hosting o Cloudflare aggiunge già alcune intestazioni, lo scanner segnala i duplicati. Rimuovile lato server o disattiva l’intestazione nel modulo.
  • Per affidare le intestazioni al server, copia il blocco Apache o Nginx dalla dashboard, poi disattiva il modulo. La segnalazione delle violazioni e il nonce, che dipendono dal modulo, non sono inclusi.

In caso di problemi

  • Una pagina non funziona più: ripristina la versione precedente dalla cronologia, oppure riporta la CSP in Report-Only il tempo di correggere.
  • Disattivare tutto: disattiva Invia le intestazioni di sicurezza nella scheda Generale, oppure il modulo.
  • HSTS: un browser che ha ricevuto HSTS rifiuta http fino alla scadenza della durata, anche dopo la disattivazione del modulo. Per questo i dispositivi di test ricevono solo 5 minuti.
Questa pagina ti è stata utile?

Ancora bloccato? Contatta l'assistenza