XSS por qué \ n debe ser reemplazado por \ nbr

1

Me encontré con la siguiente solución xss. El código antiguo era:

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

El código de corrección xss es:

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

¿Me puede aclarar cómo se puede usar \n en XSS? ¿Y cómo reemplazarlo con \n<br> resolverá el problema?

    
pregunta user2192774 20.09.2016 - 21:26
fuente

2 respuestas

3

No está pensado como protección contra XSS y no hay un contexto común donde lo haría.

En cambio, los autores resuelven el problema de que el carácter de nueva línea ( \n ) no muestra una nueva línea en HTML, por lo que agregan la etiqueta <br> para imponer un salto de línea visible.

Los autores del código incluso lo explican en un comentario ellos mismos aquí :

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

Imagina que el desarrollador desea generar una entrada de usuario en una variable javascript.

Si la entrada del usuario con \n se procesará como

var input = " hey
there"

¡Lo que en un <script> se procesará como un error y causará que no se ejecute porque su cadena no está terminada! En su lugar, reemplazar \n con <br> resultará en el muy correcto var input = "hey<br />"

    
respondido por el Xavier59 21.09.2016 - 15:12
fuente

Lea otras preguntas en las etiquetas