¿Es esta una forma segura de manejar una respuesta JSONP?

3

Estoy trabajando en un script no crítico que se ejecutará periódicamente, en realidad es solo para el entretenimiento del equipo de desarrollo. Debido a que es por diversión, realmente no importa si se bloquea a veces (es decir, no me importa si los cambios anteriores al formato de respuesta me obligan a actualizar el script). Sin embargo, debe ser seguro para ejecutarse en el servidor de mi empresa.

El origen de datos para este script sería una respuesta JSONP de un servidor externo. Sé que JSONP no es algo en lo que pueda confiar para ejecutarlo directamente, ya que podrían cambiar su respuesta para que contenga JavaScript arbitrario.

La respuesta en la página JSON actualmente tiene este aspecto:

callback(INSERT_JSON_HERE);

Si extraigo el JSON utilizando una expresión regular para eliminar la devolución de llamada circundante:

^callback\(([^)]*)\);$

y pase la cadena JSON extraída a JSON.parse() , ¿este enfoque será seguro?

Razonamiento : no estoy ejecutando ningún código directamente desde el sitio extranjero. Solo tomo una parte de su respuesta que debería contener JSON y se la pasa a JSON.parse() . Si no contiene JSON, JSON.parse producirá un error. Si cambian la devolución de llamada o utilizan algún otro código en lugar de la devolución de llamada, la expresión regular no extraerá nada.

    
pregunta Anon 24.11.2015 - 21:42
fuente

1 respuesta

1

Si todo lo que estás haciendo es extraer el lado del servidor JSON, entonces lo que estás haciendo es "seguro hasta ahora".

Recuerde, la seguridad tiene que ver con el contexto en el que se usan los datos. Después de todo, los datos son sólo 1s y 0s. Es cuando lo imprime en HTML, debe asegurarse de que sea seguro y no pueda contener scripts, o cuando lo coloca en una base de datos, debe asegurarse de que se pasa como datos en lugar de ser parte de la consulta.

    
respondido por el SilverlightFox 26.11.2015 - 12:14
fuente

Lea otras preguntas en las etiquetas