web-dev-qa-db-fra.com

Pourquoi vois-je un "Avertissement de sécurité Electron" après la mise à jour de mon projet Electron vers la dernière version?

J'ai créé le projet Electron-Vuejs-Vuetify depuis le passe-partout de ce Vuetify

Je vois cet avertissement dans la console:

Electron Security Warning 
This renderer process has Node.js integration enabled and 
attempted to load remote content. This exposes users of this app to severe security risks.

For more information and help, consult https://electronjs.org/docs/tutorial/security

Question:

Qu'est-ce qui peut causer cela - Node, Vue.js, la configuration localhost de webpack? Que devrais-je faire?

12
Un1

Vous avez ceci:

Avertissement de sécurité électronique L'intégration de Node.js et .__ dans ce processus de rendu est activée. tenté de charger du contenu distant. Cela expose les utilisateurs de cette application à de graves risques de sécurité.

Parce que de la 2ème recommandation de sécurité de Electron Documentation

2) Désactiver l'intégration Node.js pour le contenu distant

Il est primordial de désactiver l’intégration de Node.js dans n’importe quel rendu (BrowserWindow, BrowserView ou WebView) qui charge du contenu distant. L'objectif est de limiter les pouvoirs que vous accordez au contenu distant, rendant ainsi le piratage informatique beaucoup plus difficile à faire au détriment de vos utilisateurs s'ils devenaient capables d'exécuter du JavaScript sur votre site web.

Ensuite, vous pouvez accorder des autorisations supplémentaires pour des hôtes spécifiques. Par exemple, si vous ouvrez un BrowserWindow pointé sur " https://my-website.com/ ", vous pouvez attribuer à ce site exactement les capacités dont il a besoin, mais sans plus.

Pourquoi?

Une attaque XSS (Cross-Site-Scripting) est plus dangereuse si un attaquant peut sortir du processus de rendu et exécuter du code sur l'ordinateur de l'utilisateur. Les attaques par script intersite sont assez courantes - et bien qu’elles soient un problème, leur pouvoir se limite généralement à jouer avec le site Web sur lequel elles sont exécutées. Désactiver l'intégration de Node.js aide à empêcher un XSS d'être transformé en une attaque dite "d'exécution de code à distance" (RCE). Comment?

// Bad
const mainWindow = new BrowserWindow()
mainWindow.loadURL('https://my-website.com')

// Good
const mainWindow = new BrowserWindow({
  webPreferences: {
    nodeIntegration: false,
    preload: './preload.js'
  }
})

mainWindow.loadURL('https://my-website.com')

<!-- Bad -->
<webview nodeIntegration src="page.html"></webview>

<!-- Good -->
<webview src="page.html"></webview>

Lorsque vous désactivez l'intégration de Node.js, vous pouvez toujours exposer à votre site Web des API qui utilisent des modules ou des fonctionnalités de Node.js. Les scripts de préchargement continuent d’avoir accès à requérir et à d’autres fonctionnalités de Node.js, permettant aux développeurs d’exposer une API personnalisée au contenu téléchargé à distance.

Dans l'exemple de script de préchargement suivant, le site Web chargé ultérieurement aura accès à une méthode window.readConfig(), mais à aucune fonctionnalité de Node.js.

const { readFileSync } = require('fs')

window.readConfig = function () {
  const data = readFileSync('./config.json')
  return data
}

Par conséquent, vous êtes averti de pouvoir désactiver Désactiver Node.js pour le contenu distant.

J'espère que cela aide à répondre à votre question. 

11
antzshrek

Ajoutez la ligne suivante à main.js:

process.env['ELECTRON_DISABLE_SECURITY_WARNINGS'] = 'true';

Cependant, vous devriez lire Sécurité, Capacités natives et Votre responsabilité pour bien comprendre les implications de le faire.

8
netlander

La version plus récente du modèle Electron Vue comporte ceswarningsqui étaient précédemment désactivés dans la version bêta à l'aide de:

process.env['ELECTRON_DISABLE_SECURITY_WARNINGS'] = 'true';

Ce qui vous oblige maintenant à faire ce qui suit dans votre index.js:

process.env.ELECTRON_DISABLE_SECURITY_WARNINGS = '1';
0
li x

À partir d'Electron 2.0, les développeurs verront les avertissements et les recommandations imprimés sur la console du développeur. Ils n'apparaissent que lorsque le nom du binaire est Electron, indiquant qu'un développeur est en train de regarder la console. 

Je vous suggère de suivre la liste de contrôle des recommandations de sécurité officielles d’Electron pour éviter ces avertissements https://github.com/electron/electron/blob/master/docs/tutorial/security.md

0
JerryGoyal