我正在开发一个小型照片应用程序,用户选择一个本地文件,然后将其推送到带有window.URL.createObjectURL(file)
的画布 - 非常基本的东西。在测试期间,我简要地将File数组的内容转储到控制台 - 只是为了确保我得到了我想要的东西。
我在Debian 7上使用Firefox 31.0(不是Iceweasel)和Chrome 34.0.1847.116(不是Chromium)
我这样调用数组:
var file = evnt.target.files[0];
if (file) {
console.log('file');
// other stuff
}
console.log在Google Chrome浏览器中显示如下:
File {
name: "image.png"
size: 55464
type: "image/png"
webkitRelativePath: ""
}
在Mozilla Firefox浏览器中就像这样:
File {
size: 55464,
type: "image/png",
name: "image.png",
path: "",
lastModifiedDate: Date 2014-09-09T13:30:30.000Z,
mozFullPath: "/home/server/Desktop/image.png"
}
我可以要求:
console.log(evnt.target.files[0]['type')
并正确接收"image/png"
作为回复,但是当我请求时:
console.log(evnt.target.files[0]['mozFullPath']);
我刚收到回复:""
为什么这些信息会通过evnt.target.files[0]
数组泄漏,但是当我直接调用它时它是不可见的?
我的文件系统结构的信息是仅显示在我的特权控制台上,还是可以通过我的浏览器中的中间人攻击泄露?
修改
在较旧的Firefox浏览器中,这可以提升权限:
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
但它不再存在了。无论如何,在公共Linux终端/其他人的计算机上使用Firefox时会出现问题,因为IT会泄漏文件系统信息,如目录结构和系统用户名。与其他攻击一起,这在我看来是一个危险的威胁......或者我只是反应过度了?