Electronの画面にHTML落とすと、画面が切り替わっちゃうよね

Electronで立ち上げたBrowserWindowの画面に、
HTMLファイルを落とすと、
そのHTMLがウィンドウ内に表示されてしまう。


格好悪い!!!

これをふせぐには

ドロップした時に、画面が差し替わる問題を防ぐには、次のようなコードを入れておくと良い。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <script type="text/javascript">
    document.ondragover = document.ondrop = function(e) {
      e.preventDefault(); return false;
    };
  </script>
</head>

ドロップされたHTML上では、nodeとElectronの機能を使える

この挙動はアプリとして格好悪いが、
それだけはなく、
落としたHTMLではnodeとElectronの機能を利用できてしまう。
(↓のファイルをウィンドウにドロップする。)

# evil.html
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <script src="js/evil.js"></script>
</head>
<body>
evil
</body>
</html>
# js/evil.js
var fs = require('fs');
var filePath = '/Users/your.name/Desktop/evil.txt';

fs.writeFile(filePath, 'eviiiiiiilll', function(err) {
  if (err) {
    console.log(err);
    return;
  }
  console.log('done.');
});

アプリを操作できるような状況になってるわけだから、
特にセキュリティ的な問題にならないでしょうけどね。

Electron 3.0

結局、この挙動はやっぱり良くないよね、ってことで、
Electron 3.0では、デフォルトで無効にされたのであった。

おわりまる