Electronã§ã¢ããªãæ¸ãå ´åã¯ãæ°åãã¨æ ¹æ§ã§XSSãçºçãããªãããã«ããªããã°ãªããªãã
ãã®ãã¡ããå°ããã¡ãã¨æ¸ãã¾ãããã¨ããããæéããªãã®ã§çµè«ã ãæ¸ãã¨ãã¿ã¤ãã«ãå ¨ã¦ã§Electronã§ã¢ããªãæ¸ãå ´åã¯æ°åãã¨æ ¹æ§ã§XSSãçºçãããªãããã«ããªããã°ãªããªãã
ããã¾ã§Webã¢ããªã±ã¼ã·ã§ã³ä¸ã§XSSãåå¨ããã¨ãã¦ããå½±é¿ç¯å²ã¯ãã®Webã¢ããªã±ã¼ã·ã§ã³ã®ä¸ã«çã¾ãã®ã§ãWebã¢ããªã±ã¼ã·ã§ã³ã®æä¾å´ãããã許容ããã®ã§ããã°XSSã®åå¨ã«ç®ãã¤ãããã¨ãã§ãããããããElectronã¢ããªã§DOM-based XSSãä¸ãæã§ãçºçããã¨ã(ãããã)確å®ã«ä»»æã³ã¼ãå®è¡ã¸ã¨ã¤ãªãããå©ç¨è ã®PCã®(ãã®ã¦ã¼ã¶ã¼æ¨©éã§ã®)å ¨æ©è½ãæ»æè ã«ãã£ã¦å©ç¨ã§ããã
ãã®ãããElectronã§ã¢ããªã±ã¼ã·ã§ã³ãä½æããéçºè ã¯æ°åãã¨æ ¹æ§ã§XSSãå®å ¨ã«ã¤ã¶ããªããã°ãªããªãã
nodeIntegration:falseãContent-Security-Policyã¨ãã£ãä¿è·æ©æ§ã¯æ®å¿µãªããå½¹ã«ç«ããªãã
mainWindow = new BrowserWindow({width: 600, height: 400, webPreferences:{nodeIntegration:false}});
ã¿ããã«ã¬ã³ãã©ããã»ã¹ã§nodeæ©è½ãåãé¢ããããã«ã¬ã³ãã©ã®HTMLã§
<meta http-equiv="Content-Security-Policy" content="default-src 'self';">
ã¦ããã¨ãã¦ããã¬ã³ãã©ã®HTMLä¸ã«
<webview nodeintegration src="data:text/html,<script>require('child_process').exec('calc.exe',function(){})</script>"></webview>
ã®ãããªã¿ã°ãæ³¨å ¥ãããã¨ãnodeã®æ©è½ããã«ã«æ´»ç¨ãã¦ä»»æã®ã³ã¼ããå®è¡å¯è½ã¨ãªãã
ç¾å¨ãå¤ãã®Electron製ã¢ããªã±ã¼ã·ã§ã³ã§ä»»æã³ã¼ãå®è¡å¯è½ãªèå¼±æ§ãåå¨ãã¦ãããã¨ã確èªãã¦ãã¾ãã