Filtrando JavaScript da HTML per prevenire XSS?

1

Sto facendo un esercizio per ricucire una versione precedente del mio lavoro dalla e-class universitaria. È scritto in PHP e richiede la versione 5.3.27. Una delle cose che voglio applicare è prevenire l'XSS. Il sito utilizza un vecchio editor (xinha) che supporta l'input HTML senza alcuna validazione, quindi XSS è estremamente facile da fare.

Non sono autorizzato a modificare l'editor, quindi ho intenzione di modificare la convalida del server prima di utilizzare / memorizzare l'input dell'utente per bloccare le funzioni degli eventi (come onerror, onmouseover ecc.) e JavaScript. Dopo un po 'di ricerche, non ho trovato alcun modo (infallibile) per filtrare JavaScript da HTML. Il blocco di caratteri speciali HTML non funzionerà per me perché romperà i tag HTML. Qualche idea?

    
posta George Sp 16.04.2017 - 13:22
fonte

2 risposte

1

Filtrare JavaScript da HTML è una cosa molto complicata da fare, specialmente se non puoi limitare i tag e gli attributi permessi a un piccolo set (o, preferibilmente, nessuno). Giungere a questo è sorprendentemente complicato e ci sono molte insidie. Un errore è tutto ciò che serve per essere vulnerabili.

Quindi non andare su questo da soli. Utilizzare una libreria esistente, provata e testata. Per PHP HTML Purifier è popolare, ma sono sicuro che ci sono più opzioni là fuori.

Inoltre, se possibile, dovresti utilizzare una politica di sicurezza dei contenuti restrittiva. Ma non fare affidamento su questo come unica linea di difesa.

    
risposta data 18.04.2017 - 12:58
fonte
1

Se devi consentire l'HTML, usa qualcosa di provato e testato come Google Caja per disinfettarlo prima di permetterlo di produrre la tua pagina.

Si noti che tutti i disinfettanti avranno probabilmente alcune vulnerabilità non ancora scoperte. per esempio. Purificatore HTML ha avuto questi nel passato e Google Caja ha anche , quindi questa non è una soluzione solida e dovrai aggiornare regolarmente la tua libreria scelta per mitigare questo rischio.

Rolling your own solution sarebbe gravato da un rischio molto maggiore. Assicurati inoltre di implementare una politica di sicurezza dei contenuti efficace che prevenga unsafe-inline e che tu solo fonti whitelist che non contengono nulla che possa rendere vulnerabile il tuo sito (anche Google CDN contiene versioni vecchie e vulnerabili di JQuery):

https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js
    
risposta data 18.04.2017 - 13:22
fonte

Leggi altre domande sui tag