Sto lavorando a uno script non critico che verrà eseguito periodicamente, in realtà solo per l'intrattenimento del team di sviluppo. Perché è divertente, a volte non importa se si blocca (ad esempio: non mi importa se le modifiche a monte del formato di risposta mi costringono di tanto in tanto ad aggiornare lo script). Tuttavia, deve essere sicuro per l'esecuzione sul server della mia azienda.
L'origine dati per questo script sarebbe una risposta JSONP da un server esterno. So che JSONP non è qualcosa di cui posso fidarmi completamente per eseguire direttamente, dal momento che potrebbero cambiare la loro risposta per contenere JavaScript arbitrario.
La risposta sulla pagina JSON attualmente è simile a questa:
callback(INSERT_JSON_HERE);
Se estraggo il JSON usando una regex per rimuovere il callback circostante:
^callback\(([^)]*)\);$
e passa la stringa JSON estratta a JSON.parse()
, questo approccio sarà sicuro?
Ragionamento : non eseguo alcun codice direttamente dal sito straniero. Prendo solo una parte della loro risposta che dovrebbe contenere JSON e passarla a JSON.parse()
. Se non contiene JSON, JSON.parse
genererà un errore. Se cambiano la richiamata o usano un altro codice al posto della richiamata, l'espressione regolare non estrarrà nulla.