我正在开发一个小照片应用程序,用户选择一个本地文件并将其推送到画布中window.URL.createObjectURL(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]
数组,但是当我直接调用它时不可见?
有关我的文件系统结构的信息是否仅显示在我的特权控制台上,还是可以通过浏览器上的中间人攻击而泄露?
EDIT
在较旧的 Firefox 浏览器中,这可以提升权限:
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
但现在不再这样了。无论如何,在公共 Linux 终端/其他人的计算机上使用 Firefox 时这是一个问题,因为它确实会泄漏文件系统信息,例如目录结构和系统用户名。与其他漏洞一起,这对我来说似乎是一个危险的威胁......或者我只是反应过度?