1

HTML5 Filesystem API のポイントについて混乱しています。

私が知る限り、ファイル API で作成されたサンドボックス化されたファイルの 1 つのコンテンツを参照するには、ドメイン名への参照が必要です。

「HTML5 ファイルシステム API の使用」の「セキュリティに関する考慮事項」には、次のように記載されています。

個人データの漏えいまたは消去 — これは、HTML5 ファイルシステムの範囲を chroot のようなオリジン固有のサンドボックスに制限することで軽減されます。アプリケーションは、別のドメイン/オリジンのファイル システムにアクセスできません。

しかし、「起源」とは正確には何ですか?私が知る限り、その本はそれらを定義していません. たとえそのドメインがlocalhost.

これは事実ですか?もしそうなら、それはひどいです。これは、ローカル ファイルを編集できるエディターを構築できないことを意味します。確かにセキュリティ上の考慮事項はありますが、少なくともローカル ファイルを編集できるようにすることは計画の一部ではありませんか? HTML5 API は、インターネット上のコンテンツまたはローカル サーバーのセットアップ方法を知っている人のみを対象としていますか?

4

1 に答える 1

3

これは、 RFC 6454を参照するHTML5 での origin の完全な定義です。あなたに関する限り重要な部分は次のとおりです。

2 つのオリジンがスキーム/ホスト/ポートのトリプルである場合、2 つのオリジンが同一であるのは、スキーム、ホスト、およびポートが同一である場合のみです。

これでは JavaScript からファイル システムを参照できないのは事実ですが、考えてみればこれは良いことです。JavaScript を使用してファイル システムを参照できる場合、アクセスした Web ページは、知らないうちにすべてのファイルを盗む可能性があります。ただし、これはファイルにアクセスできないこととまったく同じではありません。HTML でファイルにアクセスする方法は何年も前から存在しており、次のようになります。

<input type="file" id="inputField">

HTML5 では、サーバーに往復することなく、この要素で選択されたファイルにアクセスできます。

var inputElement = document.getElementById("inputField");
inputElement.addEventListener("change", handleFiles, false);

function handleFiles() {
    var fileList = this.files;

    for (var i = 0, numFiles = files.length; i < numFiles; i++) {
        var file = files[i];
        //do stuff with file
    }
}

この MSN 記事には、上記の (テストされていない) コードを盗んだ他の良い例がいくつかあります。

HTML5 Offline Appsを使用している場合は、Web サーバーに 1 回だけアクセスしてからそのサーバーをシャットダウンし、引き続きアプリを使用して、上記の方法で添付ファイルを編集できます。

于 2012-04-25T23:07:14.360 に答える