Quali protocolli URL, se presenti, dovrei inserire nella whitelist o nella blacklist durante la generazione del browser dell'utente?

3

Sto scrivendo un'app utilizzando Electron ma suppongo che questo sarebbe un problema per qualsiasi software che consente di aprire collegamenti nel browser predefinito dell'utente attraverso il sistema operativo.

Diciamo che ho un'app che legge qualcosa come un feed di Twitter e lo mostra. Quindi l'app visualizza 10 voci. Alcune di queste voci hanno collegamenti forniti dall'utente. Se l'utente fa clic su un link, desidero avviarlo nel browser predefinito dell'utente.

In Electron mi viene detto che dovrei chiamare electron.shell.openExternal(url) . Devo filtrare gli URL? Gli URL comuni sono ad esempio http://xxx , https://xxx , mailto:xxx quindi potrei semplicemente autorizzare questi 3 tipi di URL. Allo stesso tempo, non voglio limitare a torto la buona funzionalità. In altre parole, non ho idea di quali siano gli altri schemi validi. Consenti ftp:// ? %codice%? %codice%? Quindi preferirei semplicemente passare tutto.

Allo stesso tempo sono preoccupato, ci sono URL potenzialmente cattivi? Esempio ipotetico: sftp://

Dovrei autorizzare? Lista nera? Filtro? Se sì, qual è il filtro? O dovrei semplicemente passarli al sistema operativo?

    
posta gman 23.11.2016 - 20:50
fonte

1 risposta

3

Should I whitelist? Blacklist? Filter? If so what's the filter? Or should I just pass them to OS?

Dovresti autorizzare. Vado per un minimo ragionevole di http: , https: , mailto: e facoltativamente ftp: . L'inclusione di più protocolli non è necessaria se non si ha in mente un caso d'uso speciale. Detto questo, alcuni sistemi sono più permissivi di altri. I documenti Wordpress definiscono questo elenco di protocolli sicuri nella loro funzione wp_allowed_protocols() :

Array of allowed protocols. Defaults to an array containing 'http', 'https', 'ftp', 'ftps', 'mailto', 'news', 'irc', 'gopher', 'nntp', 'feed', 'telnet', 'mms', 'rtsp', 'svn', 'tel', 'fax', 'xmpp', and 'webcal'.

Nessuno di questi è intrinsecamente non sicuro, ma non avrai alcun caso d'uso per fax: o gopher: URL.

At the same time I'm worried, are there are potentially bad URLs?

Ci sono pseudo-protocolli che hanno effetti collaterali. javascript: URL non dovrebbe essere possibile. Lo schema file: è pericoloso perché i file locali sono spesso più privilegiati dei contenuti web. Per Firefox in particolare non vuoi consentire chrome: e resource: URI.

Questo è un buon esempio per un problema in cui funziona solo la whitelist poiché non è possibile tenere traccia di tutti gli schemi URI personalizzati e dei relativi effetti per ogni singolo browser.

    
risposta data 23.11.2016 - 21:00
fonte

Leggi altre domande sui tag