
Dado contenido similar a JSON, JSON Sanitizer lo convierte en JSON válido.
Dado contenido similar a JSON, JSON Sanitizer lo convierte en JSON válido.
Esto puede conectarse en cualquiera de los extremos de una tubería de datos para ayudar a satisfacer el principio de Postel:
sé conservador en lo que haces, sé liberal en lo que aceptas de los demás
Aplicado a contenido similar a JSON proveniente de otros, producirá JSON bien formado que debería satisfacer a cualquier analizador sintáctico que uses.
Aplicado a tu salida antes de enviarla, corregirá errores menores de codificación y facilitará incrustar tu JSON en HTML y XML.

Muchas aplicaciones tienen grandes cantidades de código que usan métodos ad-hoc para generar salidas JSON.
Con frecuencia, todas estas salidas pasan por una pequeña cantidad de código
de infraestructura antes de ser enviadas por la red. Esta pequeña cantidad de
código de infraestructura puede usar esta biblioteca para asegurarse de que las
salidas ad-hoc cumplan con los estándares y sean seguras para pasar a
deserializadores (demasiado) potentes como el operador eval de Javascript.
Las aplicaciones también suelen tener API de servicios web que reciben JSON de una variedad de fuentes. Cuando este JSON se crea usando métodos ad-hoc, esta biblioteca puede transformarlo en una forma que sea fácil de analizar.
Al enganchar esta biblioteca en el código que envía y recibe solicitudes y respuestas, esta biblioteca puede ayudar a los arquitectos de software a garantizar seguridad y buena formación a nivel de todo el sistema.
El sanitizador toma contenido similar a JSON y lo interpreta como lo haría eval en JS.
Específicamente, trata con estas construcciones no estándar.
El sanitizador corrige puntuación faltante, comillas finales y corchetes de cierre
desparejados o faltantes. Si una entrada contiene solo espacios en blanco,
se sustituye la cadena JSON válida null.
La salida es JSON bien formado según lo define RFC 4627. La salida satisface estas propiedades adicionales:
"<script", "</script" ni "<!--", por lo que puede incrustarse dentro de un elemento de script HTML sin codificación adicional."]]>", por lo que puede incrustarse dentro de una sección CDATA de XML sin codificación adicional.eval incorporado de Javascript (después de envolverse entre paréntesis) o por JSON.parse. Específicamente, la salida no contendrá literales de cadena con nuevas líneas JS incrustadas (U+2028 Separador de párrafo o U+2029 Separador de línea).Dado que la salida es JSON bien formado, pasarla a eval no
tendrá efectos secundarios ni variables libres, por lo que no es ni un vector de
inyección de código, ni un vector para la exfiltración de secretos.
Esta biblioteca solo garantiza que la fase de cadena JSON → objeto Javascript
no tenga efectos secundarios ni resuelva variables libres, y no puede
controlar cómo otro código del lado del cliente interprete posteriormente el
objeto Javascript resultante. Así que si el código del lado del cliente toma una parte
de los datos analizados que está controlada por un atacante y la pasa de vuelta a través
de un intérprete poderoso como eval o innerHTML, entonces ese código del lado
del cliente podría sufrir efectos secundarios no deseados.
var myValue = eval(sanitizedJsonString); // safe
var myEmbeddedValue = eval(myValue.foo); // possibly unsafe
Además, sanitizar JSON no puede proteger a una aplicación de ataques de diputado confundido
var myValue = JSON.parse(sanitizedJsonString);
addToAdminstratorsGroup(myValue.propertyFromUntrustedSource);
El método sanitize devolverá la cadena de entrada sin asignar un nuevo
búfer cuando la entrada ya sea JSON válido que satisfaga las propiedades
anteriores. Por lo tanto, si se usa en entradas que suelen estar bien formadas,
tiene una sobrecarga de memoria mínima.
El método sanitize tiene una complejidad temporal de O(n), donde n es la longitud
de la entrada en unidades de código UTF-16.
| Construcción | Política |
|---|
'...' | Las cadenas entre comillas simples se convierten a cadenas JSON. |
\xAB | Los escapes hexadecimales se convierten a escapes Unicode JSON. |
\012 | Los escapes octales se convierten a escapes Unicode JSON. |
0xAB | Los literales enteros hexadecimales se convierten a números decimales JSON. |
012 | Los literales enteros octales se convierten a números decimales JSON. |
+.5 | Los números decimales se fuerzan al formato más estricto de JSON. |
[0,,2] | Las elisiones en los arreglos se rellenan con null. |
[1,2,3,] | Las comas finales se eliminan. |
{foo:"bar"} | Los nombres de propiedad sin comillas se ponen entre comillas. |
//comments | Se eliminan los comentarios de línea y bloque de estilo JS. |
(...) | Los paréntesis de agrupación se eliminan. |