Ci sono due vantaggi (dal punto di vista della sicurezza):
- Iniziando con un URL hard-coded si assicura che nulla venga caricato localmente (anche se sarebbe difficile sfruttarlo ancora ancora a seconda di cosa succede ai dati dopo viene decodificato da json ).
- L'input dell'utente viene iniettato nei parametri dei dati (ad esempio dopo il punto interrogativo).
Ciò limita un utente malintenzionato a modificare solo i parametri della richiesta inviati all'API di geocoding di google. Osservando le opzioni disponibili, non sembra che ci siano molti danni da fare lì.
È comunque consigliabile filtrare l'input dell'utente. Il concetto qui è difesa-in-profondità. Al momento il rischio sembra essere molto basso, ma cosa succederebbe se una modifica successiva del codice modificasse ulteriormente il modo in cui i dati vengono utilizzati, determinando una vulnerabilità? Ad esempio, è che latitude
e longitude
dall'utente sono persistiti in un database più avanti lungo la linea? Presumo di no (o lo hai trovato se è così) dal momento che stai audendo e controllando questi problemi meno ovvi. Tuttavia, il mio punto è che questa funzione nasconde il fatto che sta funzionando con input non salvati e quindi le modifiche successive potrebbero inavvertitamente introdurre una vulnerabilità.
Quindi sì (come sai), la migliore pratica è quella di disinfettare / validare l'input dell'utente prima di fare qualsiasi altra cosa. Tuttavia, qui non sembra esserci una vulnerabilità immediata a seguito di tale controllo.
Ovviamente, puoi sempre usare semplicemente il fatto che questo endpoint è collegato direttamente all'API di google maps per inviare spam alla pagina in modo costante, con conseguente a) una parte DOS della loro app più grande del previsto b o b) perché Google limita le loro ricerche geoip.