Ci sono alcune cose che mi vengono in mente qui.
Limita i siti a cui è possibile accedere
Nel migliore dei casi è possibile creare una whitelist di siti approvati da cui i dati possono essere importati. È quindi possibile controllare l'URL inserito nel proprio elenco e assumere che sia probabilmente valido.
Se ciò non è possibile, alcuni indirizzi dovrebbero essere nella lista nera (si pensi a localhost, 0.0.0.0, ..). Soprattutto gli indirizzi locali (IPv4 e IPv6) potrebbero essere utilizzati per eseguire una scansione del server stesso per accedere ai servizi disponibili solo dalla macchina locale.
Forse c'è un pannello di amministrazione accessibile dal localhost. O un sistema di database in esecuzione localmente su una determinata porta a cui è possibile accedere.
Limita lo schema URL
Assicurati che solo "http: //" e "https: //" possano essere utilizzati negli URL forniti. Un altro schema che potrebbe essere utilizzato da un utente malintenzionato è ad es. 'file: //' per caricare un file locale dal tuo server. Altri schemi come ad es. "data" o "ftp" possono anche essere utilizzati per avviare comportamenti indesiderati.
Richieste in uscita con limite di velocità
Per evitare un numero elevato di richieste in uscita verso altri siti, dovrebbe essere applicato un rigoroso limite di velocità. Per un utente un rallentamento di dieci secondi non dovrebbe essere un problema. Se qualcuno volesse utilizzare il tuo servizio per nascondere la sua identità mentre esegue un altro servizio, un ritardo di dieci secondi lo renderà inefficace.
Includi un'intestazione di contatto illecito
Puoi includere un'intestazione con informazioni su come gli amministratori possono raggiungerti se si sentono abusati dalle richieste inviate dal tuo servizio. Ciò rende ragionevolmente facile interrompere qualsiasi comportamento errato contattandoti.
Non eseguire script
Raccomanderei di non interpretare alcun script come il codice JavaScript sul sito che stai richiedendo.
Esci dall'URL
A seconda dello strumento (se esiste) che usi per interrogare il contenuto del sito, assicurati di eseguire correttamente l'escape dell'URL per impedire qualsiasi tipo di contenuto o di attacchi di tipo command injection sul tuo server.