Come posso proteggere la mia app PHP contro XSS?

2

Sto aggiornando la sicurezza di un sito esistente (quindi non posso rifare tutto con un framework con funzioni xss integrate), quindi sto cercando un modo per proteggermi dagli attacchi XSS come quelli elenco di OWASP qui .

Al momento utilizzo htmlspecialchars($text, ENT_QUOTES, 'UTF-8'); per l'output in HTML, json_encode per JS e HTMLPurifier per i dati contenenti tag HTML, ma temo che questo non sia sufficiente / corretto. Sto cercando una funzione che posso usare come:

<div><?php echo escape_for_html($text); ?></div>
<img src="<?php echo escape_for_attribute($text); ?>">

Dopo alcune ricerche sembra che soluzioni come xss_clean, ESAPI e PHPSEC non siano più mantenute o non raccomandate. Come posso proteggermi da xss quando echo negli attributi dei tag (compresi gli URL), JavaScript e CSS?

    
posta iguanaman 13.07.2016 - 17:13
fonte

1 risposta

1

Oltre alle altre tecniche di mitigazione, considera l'uso di Content-Security-Policy (CSP) per prevenire le vulnerabilità XSS.

CSP

Content Security Policy (CSP) is a computer security standard introduced to prevent cross-site scripting (XSS) : Wikipedia

È bianco-elenca i domini da cui può essere caricata una risorsa. (la risorsa potrebbe essere: js, css, immagine ecc.) È possibile aggiungere questo criterio nell'intestazione della risposta e il browser lo applicherà durante qualsiasi tentativo di caricamento delle risorse.
Viene fornito anche con la modalità solo report , che può essere utilizzata per valutare lo stato corrente della tua applicazione prima di applicarla.

Un criterio di esempio assomiglia a:

Content-Security-Policy: script-src 'self' https://abc.com

Con la politica di cui sopra, consentirà solo di scaricare javascript dall'origine corrente della pagina e da abc.com. Qualsiasi tentativo di scaricare da un'altra fonte causerà un errore come nella console del browser:

Refused to load the script 'http://evil.com/evil.js' because it violates the following Content Security Policy directive : "script-src 'self' https://abc.com".

Nota che è supportato solo dai principali browser; come: Chrome, Edge, ecc Restrizioni simili possono essere applicate anche ad altre risorse. Per ulteriori informazioni, ecco un articolo fantastico che spiega tutto ciò che devi sapere su CSP: link

    
risposta data 03.04.2018 - 06:56
fonte

Leggi altre domande sui tag