XSS perché \ n deve essere sostituito da \ nbr

1

Mi sono imbattuto nella seguente soluzione xss. Il vecchio codice era:

this.commentText = new Text(Sanitizer.sanitizeForHtml(commentText.getValue()));

Il codice di correzione xss è:

String sanitizedText = Sanitizer.sanitizeForHtml(commentText.getValue()).replace("\n", "\n<br>");

Puoi chiarirmi come si può utilizzare \n in XSS? e in che modo sostituirlo con \n<br> risolverà il problema?

    
posta user2192774 20.09.2016 - 21:26
fonte

2 risposte

3

Non è inteso come protezione contro XSS e non esiste un contesto comune dove dovrebbe essere.

Invece, gli autori risolvono il problema che il carattere di nuova riga ( \n ) non mostra una nuova riga in HTML, quindi aggiungono il tag <br> per forzare un'interruzione di riga visibile.

Gli autori del codice lo spiegano persino in un commento stesso qui :

//replacing "\n" with "\n<br>" here is to make comment text support displaying breakline
String sanitizedText = Sanitizer.sanitizeForHtml(commentText.getValue()).replace("\n", "\n<br>");
    
risposta data 21.09.2016 - 15:42
fonte
0

Immagina che lo sviluppatore desideri eseguire l'input dell'utente in una variabile javascript.

Se l'input dell'utente con \n verrà visualizzato come

var input = " hey
there"

Quale in un <script> verrà visualizzato come errore e non verrà eseguito perché la stringa non viene terminata! Invece, sostituendo \n con <br> otterrai il var input = "hey<br />" corretto

    
risposta data 21.09.2016 - 15:12
fonte

Leggi altre domande sui tag