file://
URLをAndroid WebViewまたはAndroid=ブラウザでロードすると、どのURLがオリジンとして扱われますか?そのページのJavaScriptは何にアクセスできますか? ?同じディレクトリ内の他のファイルにアクセスできますか?デバイスの他の場所にある他のファイル?
背景:デスクトップブラウザーでは、file://
のURLに対する同じ起源のポリシーが、時間の経過とともにブラウザーごとに変化していることを知っています。たとえば、一部のブラウザはすべてのfile://
URLを同じOrigin内にあるものとして扱っていたため、1つのページでfile
プロトコルを使用してすべてのページをスクリプト化できました。今日、一部のデスクトップブラウザーはディレクトリをOriginとして使用していると思います(たとえば、file://a/b/c.html
はfile://a/b/d.html
と同じOriginにあり、お互いにスクリプトを作成できますが、file://a/y/z.html
とは別のOriginにあり、スクリプトを作成できません)。ブラウザはパス全体をオリジンとして使用します(つまり、file://a/b/c.html
はfile://a/b/d.html
とは異なるオリジンにあり、それまたは他のfile
URLをスクリプト化できません)。 Androidブラウザ/ Android WebViewsで使用されるレンダラー)の状況はどうですか?
file://
URIを使用して.htmlファイルを実行すると、そのスクリプトは「ファイル」ゾーンで実行されます。つまり、XHRを使用してローカルファイルシステム上のファイルを読み取ることができます。 (これは変更される可能性があり、確認も簡単です)
ほとんどの「標準」と同様に、使用しているブラウザによって異なります。 Androidを含む任意のシステムでFirefoxを使用している場合、JavaScriptは独自のディレクトリおよびすべてのサブディレクトリ内のファイルにのみアクセスできます。しかし、これは FireFoxのSOPの最近の変更 (2012年5月1日)です。
WebKitは別の話です。 file://
ゾーンでスクリプトを実行している場合、ブラウザが必要なユーザーとして実行されている限り、ローカルファイルシステムの any file を読み取ることができます。ファイルの権限(/etc/passwd
は常に誰でも読み取り可能である必要があります)。
ほとんどのブラウザでは、Webゾーン(http、https)からファイルゾーンにリダイレクトできないことに注意してください。むかしむかしこれを行うことができましたが、それは乱用に熟した機能でした。したがって、ローカルの.htmlファイルにDOMベースのXSSの脆弱性があった場合、悪用は困難です(これを行う方法は知らないため、この方法は脆弱性になる可能性があります)。この理論上の脆弱性はおそらく「クロスゾーンスクリプティング」であり、攻撃者がローカルファイルシステムからファイルを引き出してしまう可能性がありますが、リダイレクトの制限のために悪用するのは非常に困難です。