JSON le permite retrieve data in multiple formats desde una llamada AJAX. Por ejemplo:¿Es seguro obtener datos JSON con jQuery?
$.get(sourceUrl, data, callBack, 'json');
podrían utilizarse para obtener y analizar código JSON de sourceUrl
.
JSON es el código JavaScript simple utilizado para describir los datos. Esto podría ser evadido por un intérprete de JavaScript para recuperar una estructura de datos.
En general, es una mala idea evaluar el código de fuentes remotas. Sé que la especificación JSON no permite específicamente declaraciones de funciones, pero no hay razón por la que no puedas incluir una en el código y que un consumidor inseguro e ingenuo compile/ejecute el código.
¿Cómo maneja jQuery el análisis sintáctico? ¿Evalúa este código? ¿Qué medidas de seguridad existen para evitar que alguien piratee el código sourceUrl
y distribuya código malicioso?
Creo que oyu debería usar http://www.json.org/json2.js para esto ahora - no estoy seguro de las actualizaciones exactas que se han producido en json2, pero sé que evitará anular accidentalmente implementaciones de navegador nativas de la API de JSON (¿tal vez el original no impidió esto?) – olliej
Gracias por la sugerencia, he actualizado el enlace. – Ash
No entiendo por qué es "aún más importante cuando se utiliza jQuery.getJSON()". Ambas formas están ejecutando el código de JavaScript, y ambas formas deben ser desinfectadas. Cuando se utiliza getJSON() con una devolución de llamada, generalmente proviene de otro dominio, por lo tanto, no tiene control sobre la desinfección del JSON. –