Politica della stessa origine per il file: URL nel browser Android?

7

Quando carichi un URL file:// in una WebView Android o nel browser Android, che cosa considera l'origine? Cosa può accedere al Javascript su quella pagina? Può accedere ad altri file nella stessa directory? Altri file altrove sul dispositivo?

Background: so che, nei browser desktop, la politica di origine identica per file:// URL è variata nel tempo e dal browser al browser. Ad esempio, alcuni browser hanno utilizzato tutti gli file:// URL come se fossero all'interno della stessa origine, quindi qualsiasi pagina potrebbe eseguire lo script di tutte le pagine con il protocollo file . Oggi, penso che alcuni browser desktop utilizzino la directory come origine (ad esempio, file://a/b/c.html è nella stessa origine di file://a/b/d.html e possono copiarsi a vicenda, ma hanno un'origine diversa da file://a/y/z.html e non possono copiarlo ), mentre penso che altri browser utilizzino l'intero percorso come origine (ovvero, file://a/b/c.html si trova in un'origine diversa da file://a/b/d.html e non può codificarlo o nessun altro file URL). Qual è la situazione per il browser Android / il renderer utilizzato da Android WebViews?

    
posta D.W. 07.12.2012 - 19:49
fonte

1 risposta

6

Quando esegui un file .html utilizzando l'URI file:// , lo script viene eseguito nell'area "file". Il che significa che puoi leggere i file sul file system locale usando un XHR. (Questo è soggetto a modifiche, ed è anche facile da verificare)

Come per la maggior parte degli "standard" dipende da quale browser stai usando. Se si utilizza Firefox su qualsiasi sistema, incluso Android, JavaScript può accedere solo ai file nella propria directory e in tutte le sottodirectory. Ma questo è un modifica recente SOP di FireFox (1 maggio 2012).

WebKit è una storia diversa. Se hai uno script in esecuzione nella zona file:// , puoi leggere qualsiasi file sul file system locale, a condizione che il browser sia in esecuzione come utente con le autorizzazioni file necessarie ( /etc/passwd dovrebbe sempre essere leggibile dal mondo).

Si noti che la maggior parte dei browser non consente il reindirizzamento da una zona Web (http, https) all'area del file. C'era una volta che si poteva fare questo, ma era una caratteristica che era matura per abusi. Quindi, se esistesse una vulnerabilità XSS basata su DOM in un file .html locale, sarebbe un exploit difficile (non sono a conoscenza di un metodo per farlo, e questo metodo sarebbe probabilmente una vulnerabilità). Sebbene questa vulnerabilità teorica sia forse uno "scripting cross-zone" che consentirebbe a un utente malintenzionato di estrarre i file dal file system locale, sarebbe molto difficile sfruttarli a causa delle restrizioni di reindirizzamento.

    
risposta data 07.12.2012 - 20:04
fonte

Leggi altre domande sui tag