2012-02-09 13 views
8

Sto tentando di usare jsoup per igienizzare l'html scritto da un wysiwyg nel mio client (TinyMCE come accade)jsoup modalità rilassata Whitelist troppo severo per editor WYSIWYG

La modalità rilassata non sembra essere rilassato abbastanza come impostazione predefinita, rimuove gli elementi di span e tutti gli attributi di stile.

es

String text = "<p style="color: #ff0000;">foobar</p>"; 

    Jsoup.clean(text, Whitelist.relaxed()); 

sarebbe uscita

<p>foobar</p> 

e

<span>foobar</span> 

verrebbe eliminato del tutto.

Qualcuno ha qualche esperienza sull'uso di Jsoup per sradicare la possibilità di attacchi XSS e consente comunque di superare gli elementi e gli attributi sopra indicati?

Modifica: Sono andato con il seguente. Qualcuno potrebbe consigliare su quanto sia vulnerabile?

Jsoup.clean(pitch, Whitelist.relaxed().addTags("span").addAttributes(":all","style")); 

Modifica 2: Qualcuno ha utilizzato la libreria owasp in produzione. Sembra disinfettare correttamente preservando lo stile corretto. OWASP

+0

devi significare Jsoup.clean(), giusto? –

+0

Saluti B. Anderson. Ho fatto la correzione. – jaseFace

risposta

7

Sembra che è possibile avere XSS utilizzando l'attributo di stile ..

XSS attacks and style attributes

http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/

http://www.acunetix.com/websitesecurity/cross-site-scripting.htm (Guarda la sezione DIV, che vorrei assumere lavori lo stesso per SPAN)

Ecco un codice che ho scritto per testare l'esempio nell'ultimo collegamento ..

text = "<span style=\"width: expression(alert('XSS'));\">"; 
    System.out.println(Jsoup.clean(text, org.jsoup.safety.Whitelist.relaxed().addTags("span").addAttributes(":all","style"))); 

Invia esattamente l'input. Se questo è veramente un vettore XSS, potresti comunque essere nei guai.

+0

Bel dettaglio. Grazie. Conoscete una libreria o un metodo che posso usare per verificare la sicurezza dei contenuti dell'attributo di stile passato? Altrimenti dovrò togliere la maggior parte delle adorabili funzionalità di styling di wysiwyg disponibili tramite tinymce? – jaseFace

+0

Scusa ... Non lo so. –

+0

Ho provato l'esempio che hai dato e jsoup è abbastanza intelligente da eliminare l'attributo di stile incriminato ma consentire uno stile semplice come style = "color: red". Comunque mi sento ancora a disagio. – jaseFace