在Electron应用程序的隔离环境中从文件输入获取绝对文件路径

时间:2019-09-16 17:19:15

标签: electron

我正在启动一个基于Electron的桌面应用程序,它将扩展现有的Web应用程序功能。

我对我能否从文件输入中获取绝对文件路径感兴趣。 HTML显示在BrowserView内部,该浏览器已禁用nodeIntegration并已启用contextIsolation。 在这种情况下,我的简单测试确实返回了有效的文件路径,尽管我的理解是不应该这样做。 也许我缺少什么?看起来像一个安全漏洞… 我可以在我的桌面应用程序中指望Electron在类似于以下代码中所示的情况下将返回有效的文件路径吗?

main.js

const { app, BrowserWindow, BrowserView } = require('electron');

let mainWindow;

const createWindow = () => {
  // Create the browser window.
  mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
  });

  let view = new BrowserView({
    webPreferences: {
      nodeIntegration: false,
      contextIsolation: true
    }
  })
  mainWindow.setBrowserView(view)
  view.setBounds({ x: 0, y: 0, width: 800, height: 600 })
  view.webContents.loadURL('http://localhost:8000/index.html')

  mainWindow.on('closed', () => {
    mainWindow = null;
  });
};
app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit();
  }
});

app.on('activate', () => {
  if (mainWindow === null) {
    createWindow();
  }
});

index.html

<html>
  <script type="text/javascript">
  function _on_file_change_() {
    file_input = document.getElementById('file1');
    console.log(file_input.files[0]);
  }
  </script>
  <head>
    <meta charset="UTF-8">
    <title>Hello World!</title>
  </head>
  <body>
    <input type="file" id='file1' onchange="_on_file_change_(this.files)"/>
  </body>
</html>

0 个答案:

没有答案