Content Security Policy (CSP) è solo un livello di sicurezza che aiuta a rilevare e mitigare alcuni tipi di attacchi, tra cui Cross Site Scripting (XSS) e attacchi di data injection. Tuttavia, tieni presente che la sicurezza riguarda la difesa in profondità , quindi è necessario implementare ulteriori livelli di sicurezza e ricorda che la prevenzione delle vulnerabilità Cross-site Scripting Attacks (XSS) in tutte le lingue richiede due considerazioni principali :
- il tipo di sanitizzazione eseguita sull'input
- posizione in cui è inserito quell'input.
È importante ricordare che non importa quanto bene l'input sia filtrato; non esiste un unico metodo di sanitizzazione che possa impedire tutto il Cross-site Scripting (XSS).
Il filtraggio richiesto dipende in larga misura dal contesto in cui i dati sono inseriti. Prevenire l'XSS con dati inseriti tra elementi HTML è molto semplice. D'altro canto, prevenire l'XSS con i dati inseriti direttamente nel codice JavaScript è molto più difficile e talvolta impossibile.
Per la maggior parte delle applicazioni PHP, htmlspecialchars () sarà il tuo migliore amico. htmlspecialchars () fornito senza argomenti convertirà caratteri speciali in entità HTML.
Esiste un'altra funzione che è quasi identica a htmlspecialchars (). htmlenities () esegue la stessa disinfezione funzionale su personaggi pericolosi, tuttavia codifica tutte le entità di carattere quando ne è disponibile una.
strip_tags () non deve essere utilizzato esclusivamente per la sanitizzazione dei dati. strip_tags () rimuove il contenuto tra tag HTML e non può impedire che esistano istanze XSS all'interno di attributi di entità HTML. anche strip_tags () non filtra o codifica parentesi angolari di chiusura non accoppiate. Un utente malintenzionato potrebbe combinare questo con altri punti deboli per inserire JavaScript completamente funzionale nella pagina.
addslashes () è spesso usato per sfuggire all'input quando inserito nelle variabili JavaScript.