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では、デフォルトで無効にされたのであった。
おわりまる