Java: detecta caracteres de control que no son correctos para JSON
stoy reinventando la rueda y creando mis propios métodos de análisis JSON en Java.
Voy por la documentación (¡muy bonita!) En json.org. La única parte de la que no estoy seguro es dónde dice "o carácter de control"
ado que la documentación es tan clara y JSON es tan simple y fácil de implementar, pensé que seguiría adelante y requeriría la especificación en lugar de perderme.
¿Cómo lo haríacorrectament ¿eliminar los caracteres de control en Java? ¿Quizás hay un rango unicode?
Edit: A (¿comúnmente?) Pieza faltante en el rompecabezasI haber sido informado que hay otros caracteres de control fuera deel rango definido 1 2 que puede ser problemático en<script>
etiquetas.
Principalmente los caracteres U + 2028 y U + 2029, Separador de líneas y párrafos, que actúan como líneas nuevas. Inyectar una nueva línea en el medio de un literal de cadena probablemente causará un error de sintaxis (literal de cadena sin terminar). @3
Aunque creo que esto no representa una amenaza XSS, sigue siendo una buena idea agregar reglas adicionales para el uso en<script>
etiquetas.
\u
notación. Esos personajes son poco comunes para empezar. Si lo desea, puede agregar a la lista blanca, pero le recomiendo un enfoque de lista blanca. En caso de que no lo sepa,no lo olvid acerca de</script
(no distingue entre mayúsculas y minúsculas), que podría causar la inyección de script HTML a tu página con los personajes</script><script src=http://tinyurl.com/abcdef>
. Ninguno de esos caracteres está codificado por defecto en JSON.