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.