Aller au contenu principal

Correction de la vulnérabilité WebPreferences

· 3 mins de lecture

Une vulnérabilité d'exécution de code à distance a été découverte dans les applications ayant la capacité d'ouvrir des fenêtres enfants imbriquées sur les versions d'Electron (3.0.0-beta.6, 2.0.7, 1.8.7 et 1.7.15). Cette vulnérabilité a été assignée à l'identifiant CVE CVE-2018-15685.


Plateformes affectées

Vous êtes impacté si :

  1. Vous intégrez n'importe quel contenu d'utilisateur distant, même dans une sandbox
  2. Vous acceptez des entrées utilisateur présentant des vulnérabilités XSS

Détails

Vous êtes impacté si un code utilisateur s'exécute à l'intérieur d'une iframe / peut créer une iframe. Étant donné la possibilité d'une vulnérabilité XSS, on peut supposer que la plupart des applications sont vulnérables à ce cas.

Vous êtes également impacté si vous ouvrez l'une de vos fenêtres avec l'option nativeWindowOpen: true ou sandbox: true. Bien que cette vulnérabilité nécessite également une vulnérabilité XSS pour exister dans votre application, vous devriez quand même appliquer l'une des mesures ci-dessous si vous utilisez l'une de ces options.

Atténuation

Nous avons publié de nouvelles versions d'Electron qui incluent des corrections pour cette vulnérabilité : 3.0.0-beta.7, 2.0.8, 1.8.8, et 1.7.16. Nous demandons instamment à tous les développeurs Electron de mettre à jour leurs applications vers la dernière version stable immédiatement.

Si, pour une raison quelconque, vous n'êtes pas en mesure de mettre à jour votre version d'Electron, vous pouvez protéger votre application en appelant de manière générale event.preventDefault() sur l'événement new-window pour tous les webContents. Si vous n'utilisez pas du tout window.open ou aucune fenêtre enfant, c'est aussi une atténuation valide pour votre application.

mainWindow.webContents.on('new-window', (e) => e.preventDefault());

Si vous comptez sur la capacité de vos fenêtres enfant à créer des fenêtres petit-enfant, une troisième stratégie d'atténuation consiste à utiliser le code suivant sur votre fenêtre de niveau supérieur :

const enforceInheritance = (topWebContents) => {
const handle = (webContents) => {
webContents.on(
'new-window',
(event, url, frameName, disposition, options) => {
if (!options.webPreferences) {
options.webPreferences = {};
}
Object.assign(
options.webPreferences,
topWebContents.getLastWebPreferences(),
);
if (options.webContents) {
handle(options.webContents);
}
},
);
};
handle(topWebContents);
};

enforceInheritance(mainWindow.webContents);

Ce code fera en sorte que la webPreferences de la fenêtre de niveau supérieur soit appliquée manuellement à toutes les fenêtres enfants à l'infini.

Informations complémentaires 

Cette vulnérabilité a été découverte et signalée de manière responsable au projet Electron par Matt Austin de Contrast Security.

Pour en savoir plus sur les meilleures pratiques pour sécuriser vos applications Electron, consultez notre tutoriel de sécurité.

Si vous souhaitez signaler une vulnérabilité dans Electron, envoyez un e-mail à security@electronjs.org.

Recherche

· 6 mins de lecture

Le site Web d'Electron a un nouveau moteur de recherche qui fournit des résultats instantanés concernant la documentation des API, les tutoriels, les paquets npm liés à Electron, et plus encore.

Capture d'écran d'Electron Search


L'apprentissage d'une nouvelle technologie ou d'un nouveau framework comme Electron peut être intimidant. Une fois la phase de démarrage rapide dépassée , il peut être difficile d'apprendre les meilleures pratiques ou de trouver les bonnes APIs, ou encore de découvrir les outils qui vous aideront à construire l'application de vos rêves. Notre désir est que le site web d'Electron soit un meilleur outil pour trouver les ressources dont vous avez besoin afin de vous peremettre de construire des applications rapidement et facilement.

Quelle que soit la page où vous vous trouvez sur electronjs.org la nouvelle zone de saisie de recherche est située en haut de la page.

Moteur de recherche

Lorsque nous avons décidé d'ajouter une recherche au site web, nous avons mis en place notre propre moteur de recherche en utilisant GraphQL comme backend. Cela a été un plaisir de travailler avec GraphQL et le moteur de recherche était performant , mais, nous avons rapidement réalisé que ce n'était pas si trivial de construire un moteur de recherche. Les choses comme la recherche par mots multiples ou la détection des fautes de frappe nécessitent beaucoup de travail pour que cela fonctionne correctement. Donc, plutôt que de réinventer la roue, nous avons décidé d'utiliser une solution de recherche existante : Algolia.

Algolia est un service de recherche hébergé qui est devenu rapidement le moteur de recherche favori au sein de projets open source populaires tels que React, Vue, Bootstrap, Yarn et bien d'autres encore.

Voici quelques-unes des fonctionnalités qui ont fait d'Algolia un choix parfaitement adapté au projet Electron :

Documentation de l'API

Parfois, vous savez ce que ce que vous voulez accomplir, mais sans savoir exactement comment le faire. Electron possède plus de 750 méthodes d'API, événements et propriétés. Aucun humain ne peut se souvenir facilement de tous ces éléments, par contre les ordinateurs sont bons à cet égard. En utilisant les données structurées en JSON des API d'Electron, nous avons indexé toutes ces données dans Algolia, et vous pouvez ainsi, facilement trouver exacterment l'API que vous recherchez.

Vous essayez de redimensionner une fenêtre? Recherchez redimensionner et sautez directement à la méthode dont vous avez besoin.

Tutoriels

Electron a une collection toujours croissante de tutoriels pour compléter sa documentation. Maintenant vous trouverez plus facilement des tutoriels sur un sujet donné, en sus de la documentation de l'API associée.

Vous recherchez les bonnes pratiques en matière de sécurité ? Recherchez sécurité.

Packages npm

Il y a maintenant plus de 700 000 packages dans le registre npm et ce n'est pas toujours facile d'y trouver celui dont vous avez besoin. Pour vous y retrouver plus facilement parmi tous ces modules, nous avons créé electron-npm-packages, une collection des plus de 3400 modules du registre construits spécifiquement pour être utilisés avec Electron.

Les gens de Bibliothèques. o ont créé SourceRank, un système de notation de projets logiciels basé sur une combinaison de facteurs comme le code, la communauté, la documentation et l'utilisation. Nous avons créé un module sourceranks qui inclut le score obtenu par chaque module dans le registre npm, et nous utilisons ces scores pour trier les résultats.

Vous voulez des solutions de rechange aux modules IPC intégrés à Electron? Recherche de is:package ipc.

Applications Electron

Il est facile d'indexer des données avec Algolia, nous avons donc ajouté la liste des applications existantes depuis electron/apps.

Essayez une recherche pour [musique] ou [homebrew].

Filtrage des résultats

Si vous avez déja utilisé la recherche de code de GitHub, vous êtes probablement habitué aux filtres par clé-valeur tels que extension:js ou user:defunkt. Nous avons considéré que puisque cette technique de filtrage est très efficace, et nous vons donc ajouter le mot-clé is: à la recherche d'Electron qui vous permett de filtrer les résultats pour n'afficher qu'un seul type:

Les gens aiment les raccourcis clavier ! La nouvelle recherche peut être utilisée entièrement au clavier:

  • / donne le focus au champ de saisie
  • esc donne le focus au champ de saisie et le vide
  • down se déplace jusqu'au résultat suivant
  • up se déplace au résultat précédent ou au champ de saisie
  • enter ouvre un résultat

Nous avons également rendu lopen-source es sources du module qui permet cette interaction avec le clavier. Il est conçu pour être utilisé avec Algolia InstantSearch, mais est suffisament générique pour permettre la compatibilité avec différentes implémentations de recherche.

Votre avis nous est nécessaire

Nous voulons avoir de vos nouvelles si vous rencontrez des problèmes avec le nouvel outil de recherche!

La meilleure façon de soumettre vos commentaires est de déposer un problème sur GitHub dans le dépôt approprié :

Merci

Remerciements spéciaux à Emily Jordan et Vanessa Yuen pour avoir produit ces nouvelles fonctionnalités de recherche, à Librairies.io pour la fourniture de scores SourceRank et à l'équipe d'Algolia pour leur aide lors du démarrage. 🍹

Internationalization Updates

· 3 mins de lecture

Depuis le lancement du nouveau site web Electron internationalisé nous avons travaillé dur pour rendre le développement d'Electron encore plus accessible aux développeurs en dehors du monde anglophone.

Voici donc quelques mises à jour passionnantes pour i18n!


🌐 Passage d'une langue à l'autre

Saviez-vous que de nombreuses personnes qui lisent une documentation traduite font souvent des recoupements avec la documentation originale en anglais? Ils le font pour se familiariser avec la documentation en anglais et éviter les traductions obsolètes ou inexactes, problèmes que l'on peut rencontrer dans les documentations internationalisées.

Language toggle on Electron documentation

Pour faciliter le renvoi vers la documentation anglaise, nous avons récemment fourni une fonctionnalité qui vous permet d'activer/désactiver de façon transparente une section de la documentation d'Electron entre l'anglais et la langue dans laquelle vous consultez le site. Le bouton de changement de langue s'affichera à partir du moment où vous aurez sélectionné une locale non anglaise sur le site web.

⚡ Accès rapide à la page de traduction

New Electron documentation footer in Japanese

Notice a typo or an incorrect translation while you're reading the documentation? You no longer have to log in to Crowdin, pick your locale, find the file you'd like the fix, etc etc. Instead, you can just scroll down to the bottom of the said doc, and click "Translate this doc" (or the equivalent in your language). Voila! Vous êtes directement dirigé vers la page de traduction de Crowdin. Now apply your translation magic!

📈 Quelques statistiques

Ever since we have publicized the Electron documentation i18n effort, we have seen huge growth in translation contributions from Electron community members from all around the world. To date, we have 1,719,029 strings translated, from 1,066 community translators, and in 25 languages.

Translation Forecast provided by Crowdin

Here is a fun graph showing the approximate amount of time needed to translate the project into each language if the existing tempo (based on the project activity during the last 14 days at the time of writing) is preserved.

📃 Translator Survey

We would like to give a huge ❤️ thank you ❤️ to everyone who has contributed their time to help improving Electron! In order to properly acknowledge the hard work of our translator community, we have created a survey to collect some information (namely the mapping between their Crowdin and Github usernames) about our translators.

If you are one of our incredible translators, please take a few minutes to fill this out: https://goo.gl/forms/b46sjdcHmlpV0GKT2.

🙌 Node's Internationalization Effort

Because of the success of Electron's i18n initiative, Node.js decided to model their revamped i18n effort after the pattern we use as well! 🎉 The Node.js i18n initiative has now been launched and gained great momentum, but you can stil read about the early proposal and reasoning behind it here.

🔦 Contributing Guide

If you're interested in joining our effort to make Electron more international friendly, we have a handy-dandy contributing guide to help you get started. Happy internationalizing! 📚

Electron 2.0.0

· 5 mins de lecture

After more than four months of development, eight beta releases, and worldwide testing from many apps' staged rollouts, the release of Electron 2.0.0 is now available from electronjs.org.


Release Process

Starting with 2.0.0, Electron's releases will follow semantic versioning. This means the major version will bump more often and will usually be a major update to Chromium. Patch releases should be more stable because they will contain only high-priority bug fixes.

Electron 2.0.0 also represents an improvement to how Electron is stabilized before a major release. Several large scale Electron apps have included 2.0.0 betas in staged rollouts, providing the best feedback loop Electron's ever had for a beta series.

Changes / New Features

  • Major bumps to several important parts of Electron's toolchain, including Chrome 61, Node 8.9.3, V8 6.1.534.41, GTK+ 3 on Linux, updated spellchecker, and Squirrel.
  • In-app purchases are now supported on MacOS. #11292
  • New API for loading files. #11565
  • New API to enable/disable a window. #11832
  • New API app.setLocale(). #11469
  • New support for logging IPC messages. #11880
  • New menu events. #11754
  • Add a shutdown event to powerMonitor. #11417
  • Add affinity option for gathering several BrowserWindows into a single process. #11501
  • Add the ability for saveDialog to list available extensions. #11873
  • Support for additional notification actions #11647
  • The ability to set macOS notification close button title. #11654
  • Add conditional for menu.popup(window, callback)
  • Memory improvements in touchbar items. #12527
  • Improved security recommendation checklist.
  • Add App-Scoped Security scoped bookmarks. #11711
  • Add ability to set arbitrary arguments in a renderer process. #11850
  • Add accessory view for format picker. #11873
  • Fixed network delegate race condition. #12053
  • Drop support for the mips64el arch on Linux. Electron requires the C++14 toolchain, which was not available for that arch at the time of the release. We hope to re-add support in the future.

Modifications majeures de l'API

  • Removed deprecated APIs, including:
    • Changed menu.popup signature. #11968
    • Removed deprecated crashReporter.setExtraParameter #11972
    • Removed deprecated webContents.setZoomLevelLimits and webFrame.setZoomLevelLimits. #11974
    • Removed deprecated clipboard methods. #11973
    • Removed support for boolean parameters for tray.setHighlightMode. #11981

Bug Fixes

  • Changed to make sure webContents.isOffscreen() is always available. #12531
  • Fixed BrowserWindow.getFocusedWindow() when DevTools is undocked and focused. #12554
  • Fixed preload not loading in sandboxed render if preload path contains special chars. #12643
  • Correct the default of allowRunningInsecureContent as per docs. #12629
  • Fixed transparency on nativeImage. #12683
  • Fixed issue with Menu.buildFromTemplate. #12703
  • Confirmed menu.popup options are objects. #12330
  • Removed a race condition between new process creation and context release. #12361
  • Update draggable regions when changing BrowserView. #12370
  • Fixed menubar toggle alt key detection on focus. #12235
  • Fixed incorrect warnings in webviews. #12236
  • Fixed inheritance of 'show' option from parent windows. #122444
  • Ensure that getLastCrashReport() is actually the last crash report. #12255
  • Fixed require on network share path. #12287
  • Fixed context menu click callback. #12170
  • Fixed popup menu position. #12181
  • Improved libuv loop cleanup. #11465
  • Fixed hexColorDWORDToRGBA for transparent colors. #11557
  • Fixed null pointer dereference with getWebPreferences api. #12245
  • Fixed a cyclic reference in menu delegate. #11967
  • Fixed protocol filtering of net.request. #11657
  • WebFrame.setVisualZoomLevelLimits now sets user-agent scale constraints #12510
  • Set appropriate defaults for webview options. #12292
  • Improved vibrancy support. #12157 #12171 #11886
  • Fixed timing issue in singleton fixture.
  • Fixed broken production cache in NotifierSupportsActions()
  • Made MenuItem roles camelCase-compatible. #11532
  • Improved touch bar updates. #11812, #11761.
  • Removed extra menu separators. #11827
  • Fixed Bluetooth chooser bug. Closes #11399.
  • Fixed macos Full Screen Toggle menu item label. #11633
  • Improved tooltip hiding when a window is deactivated. #11644
  • Migrated deprecated web-view method. #11798
  • Fixed closing a window opened from a browserview. #11799
  • Fixed Bluetooth chooser bug. #11492
  • Updated to use task scheduler for app.getFileIcon API. #11595
  • Changed to fire console-message event even when rendering offscreen. #11921
  • Fixed downloading from custom protocols using WebContents.downloadURL. #11804
  • Fixed transparent windows losing transparency when devtools detaches. #11956
  • Fixed Electron apps canceling restart or shutdown. #11625

macOS

  • Fixed event leak on reuse of touchbar item. #12624
  • Fixed tray highlight in darkmode. #12398
  • Fixed blocking main process for async dialog. #12407
  • Fixed setTitle tray crash. #12356
  • Fixed crash when setting dock menu. #12087

Linux

Windows

  • Added Visual Studio 2017 support. #11656
  • Fixed passing of exception to the system crash handler. #12259
  • Fixed hiding tooltip from minimized window. #11644
  • Fixed desktopCapturer to capture the correct screen. #11664
  • Fixed disableHardwareAcceleration with transparency. #11704

Et maintenant ?

The Electron team is hard at work to support newer versions of Chromium, Node, and v8. Expect 3.0.0-beta.1 soon!

Mise à jour automatique simplifiée pour les applications open source

· 3 mins de lecture

Aujourd’hui, nous publions et hérgeons un webservice , open-source, gratuit ainsi que son package complémentaire disponible sur npm pour permettre d'effectuer facilement la mise à jour automatique des applications Electron open source. Il s’agit d’une étape permettant aux développeurs d’applications de moins avoir à réfléchir au déploiement et d'avantage au développement d’expériences de haute qualité pour leurs utilisateurs.


Le nouveau module de mise à jour en action

Faciliter les choses

Electron possède l'API autoUpdater donnant aux applications la possibilité de consommer des métadonnées depuis un point de terminaison distant pour vérifier les mises à jour, de télécharger celles-ci en arrière-plan avant de les installer automatiquement.

C'était jusqu'alors, pour de nombreux développeurs d'applications Electron, une étape lourde dans le processus de déploiement que de permettre ces mises à jour car cela nécessitait un serveur web pour le déploiement et que celui-ci devait être maintenu uniquement pour servir les métadonnées de l'historique des versions de l'application.

Aujourd'hui, nous annonçons une nouvelle solution clés en main de mise à jour automatique des applications. Si votre application Electron eréside sur un dépôt GitHub public et que vous utilisez GitHub Releases pour publier des builds, vous pouvez utiliser ce service pour fournir des mises à jour en continu à vos utilisateurs.

Utiliser le nouveau module

Pour minimiser la configuration de votre part, nous avons créé update-electron-app, un module npm qui s'intègre au nouveau webservice update.electronjs.org.

Installer le module:

npm install update-electron-app

Appelez-le de n’importe où dans le processus principal de votre application [][]:

require('update-electron-app')();

Voilà! Par défaut, ce module vérifiera les mises à jour au démarrage de l'application puis ensuite toutes les dix-minutes. Lorsqu'une mise à jour sera détectée, elle sera téléchargée automatiquement en arrière-plan et une boîte de dialogue s'affichera lorsque la mise à jour sera prête.

Migration des applications existantes

Les applications utilisant déjà l'API autoUpdater d'Electron peuvent également utiliser ce service. Pour ce faire, vous pouvez personnaliser le module update-electron-app ou intégrer directement avec update.electronjs.org.

Alternatives

Si vous utilisez electron-builder pour packager votre application, vous pouvez utiliser son système intégré de mise à jour. Pour plus d’informations, reportez-vous à electron.build/auto-update .

Si votre application est privée, vous devrez alors utiliser votre propre serveur de mise à jour. Il y a un certain nombre d'outils open-source pour cela, y compris Hazel de Zeit et Nucleus d'Atlassian. Pour plus d'informations, consultez le tutoriel Déployer un serveur de mise à jour.

Remerciements

Merci à Julian Gruber pour avoir aidé à concevoir ce service web simple et évolutif. Merci aux collègues de Zeit pour leur service open-source Hazel dont nous nous sommes inspiré pour la conception. Merci à Samuel Attard pour les révisions de code. Merci à la communauté Electron d’avoir aidé à tester ce service.

🌲 Voila de quoi assurer une évolution permanente des applications Electron !

New in Electron 2: In-App Purchases

· 2 mins de lecture

The new Electron 2.0 release line is packed with new features and fixes. One of the highlights from this new major version is a new inAppPurchase API for Apple's Mac App Store.


In-app purchases enable content or subscriptions to be purchased directly from within apps. This gives developers an easy way to embrace the freemium business model, wherein users pay nothing to download an app and are offered optional in-app purchases for premium features, additional content, or subscriptions.

The new API was added to Electron by community contributor Adrien Fery to enable in-app purchases in Amanote, a note-taking Electron app for lectures and conferences. Amanote is free to download and allows clear and structured notes to be added to PDFs, with features like mathematical formulae, drawings, audio recording, and more.

Since adding in-app purchase support to the Mac version of Amanote, Adrien has noted a 40% increase in sales!

Démarrer

The new inAppPurchase API has already landed in the latest Electron beta:

npm i -D electron@beta

The docs for the API can be found on GitHub, and Adrien has been kind enough to write a tutorial on how to use the API. To get started adding in-app purchases to your app, see the tutorial.

More improvements to the API are in the works, and will soon be landing in an upcoming Electron beta release.

Windows Could Be Next

Up next, Adrien is hoping to open a new revenue channel for Amanote by adding support for Microsoft Store in-app purchases in Electron. Stay tuned for developments on that!

Correctif de vulnérabilité de Webview

· 2 mins de lecture

Une vulnérabilité a été découverte qui permettait de réactiver l'intégration de Node.js dans certaines applications Electron qui la désactivent. L’identificateur CVE CVE a été attribué à cette vulnérabilitéCVE-2018-1000136.


Applications concernées

Une application est affectée si toutes les conditions suivantes sont remplies :

  1. Fonctionne sur Electron 1.7, 1.8 ou une version bêta 2.0.0
  2. Permet l’exécution de code distant arbitraire
  3. Désactive l'intégration de Node.js
  4. Ne déclare pas explicitement webviewTag: false dans ses webPreferences
  5. N’active pas l’option nativeWindowOption
  6. N'intercepte pas les événements new-window et surcharge manuellement event.newGuest sans utiliser le tag d'options fournie

Bien que cela ne semble concerner qu'une minorité d'applications Electron, nous vous encourageons à ce que toutes les applications soient mises à jour par précaution.

Atténuation

Cette vulnérabilité est corrigée dans les versions d'aujourd'hui de 1.7.13, 1.8.4et 2.0.0-beta.5.

Les développeurs ne pouvant pas mettre à niveau la version Electron de leur application peuvent atténuer la vulnérabilité avec le code suivant :

app.on('web-contents-created', (event, win) => {
win.on(
'new-window',
(event, newURL, frameName, disposition, options, additionalFeatures) => {
if (!options.webPreferences) options.webPreferences = {};
options.webPreferences.nodeIntegration = false;
options.webPreferences.nodeIntegrationInWorker = false;
options.webPreferences.webviewTag = false;
delete options.webPreferences.preload;
},
);
});

// and *IF* you don't use WebViews at all,
// you might also want
app.on('web-contents-created', (event, win) => {
win.on('will-attach-webview', (event, webPreferences, params) => {
event.preventDefault();
});
});

Informations complémentaires 

Cette vulnérabilité a été trouvée et signalée de manière responsable au projet Electron par Trustwave SpiderLabs.

Pour en savoir plus à propos des meilleures pratiques pour sécuriser vos applications Electron, consultez notre tutoriel de sécurité.

Si vous souhaitez signaler une vulnérabilité dans Electron, envoyez un e-mail à security@electronjs.org.

Veuillez vous inscrire à notre liste de diffusion recevoir des mises à jour sur les versions et les mises à jour de sécurité.

Problèmes techniques avec le site web

· 2 mins de lecture

La semaine dernière, le site electronjs.org a eu quelques minutes de temps d'arrêt. Si vous avez été affecté par ces brèves interruptions, nous sommes désolés pour la gêne occasionnée. Après investigation , nous avons diagnostiqué aujourd'hui, la cause principale et avons déployé un correctif.


Pour éviter ce type de temps d'arrêt à l'avenir, nous avons activé les alertes de seuil Heroku sur notre application. Chaque fois que notre serveur web accumule des requêtes ayant échouées ou des réponses lentes au-delà d'un certain seuil, notre équipe sera informée afin que nous puissions résoudre le problème rapidement.

Documentation hors connexion et pour de multiples langues

La prochaine fois que vous développerez une application Electron dans un avion ou dans un café en sou-sol, vous voudrez peut-être avoir une copie de la documentation pour vous y référer hors ligne. Heureusement, la documentation d'Electron est disponible sous forme de fichiers Markdown dans plus de 20 langues.

git clone https://github.com/electron/electron-i18n
ls electron-i18n/content

Documentation hors connexion avec interface graphique

devdocs.io/electron est un site pratique qui stocke des documentations pour une utilisation hors ligne, et pas seulement pour Electron mais pour beaucoup d'autres projets comme JavaScript, TypeScript, Node.js, React, Angular. Et bien sûr il existe également une application Electron pour cela. Consultez devdocs-app sur le site d'Electron.

devdocs-app

Si vous préférez installer les applications sans utiliser votre souris ou pavé tactile, essayez la commande install d'Electron Forge :

npx electron-forge install egoist/devdocs-app

Protocol Handler Vulnerability Fix

· 2 mins de lecture

A remote code execution vulnerability has been discovered affecting Electron apps that use custom protocol handlers. This vulnerability has been assigned the CVE identifier CVE-2018-1000006.


Plateformes affectées

Electron apps designed to run on Windows that register themselves as the default handler for a protocol, like myapp://, are vulnerable.

Such apps can be affected regardless of how the protocol is registered, e.g. using native code, the Windows registry, or Electron's app.setAsDefaultProtocolClient API.

macOS and Linux are not vulnerable to this issue.

Atténuation

We've published new versions of Electron which include fixes for this vulnerability: 1.8.2-beta.5, 1.7.12, and 1.6.17. We urge all Electron developers to update their apps to the latest stable version immediately.

Si pour une raison quelconque, vous ne pouvez pas mettre à jour votre version d'Electron, vous pouvez ajouter -- comme dernier argument en appelant l'application . etAsDefaultProtocolClient, qui empêche Chromium d'analyser d'autres options. The double dash -- signifies the end of command options, after which only positional parameters are accepted.

app.setAsDefaultProtocolClient(protocol, process.execPath, [
'--your-switches-here',
'--',
]);

Voir l'API app.setAsDefaultProtocolClient pour plus de détails.

Voir l'API app.setAsDefaultProtocolClient pour plus de détails.

If you wish to report a vulnerability in Electron, email security@electronjs.org.

Electron 2.0 et au-delà - Gestion des versions sémantiques

· 2 mins de lecture

A new major version of Electron is in the works, and with it some changes to our versioning strategy. As of version 2.0.0, Electron will strictly adhere to Semantic Versioning.


This change means you'll see the major version bump more often, and it will usually be a major update to Chromium. Patch releases will also be more stable, as they will now only contain bug fixes with no new features.

Incréments de version Majeure

  • mises à jour de version Chromium
  • Mises à jour de la version majeure de Node.js
  • changement Electron qui altère l'API

Incréments de version mineure

  • Mises à jour mineure de la version de Node.js
  • changement Electron n'altérant pas l'API

Incréments de version de Correctifs

  • Mises à jour des correctifs de Node.js
  • mises à jour de correctifs Chromium
  • Corrections de bugs d'Electron

Because Electron's semver ranges will now be more meaningful, we recommend installing Electron using npm's default --save-dev flag, which will prefix your version with ^, keeping you safely up to date with minor and patch updates:

npm install --save-dev electron

For developers interested only in bug fixes, you should use the tilde semver prefix e.g. ~2.0.0, which which will never introduce new features, only fixes to improve stability.

For more details, see electronjs.org/docs/tutorial/electron-versioning.