SOLFIND
Web Lens
Portal home

ASAR Integrity | Electron

https://www.electronjs.org/de/docs/latest/tutorial/asar-integrity • 48 KB fetched
Open original page


ASAR Integrity | Electron Zum Hauptteil springen Electron Dokumentation API Blog Tools * Electron Forge * Elektro-Fiddle Community * Kontrolle * Showcase * Ressourcen Veröffentlichungen Deutsch * English * Deutsch * Español * Français * 日本語 * Português * Русский * 中文 Suche * Loslegen * Prozesse in Electron * Bewährte Verfahren * Beispiele * Entwicklung * Barrierefreiheit * Advanced Installation Instructions * ASAR Archiv * ASAR Integrity * Boilerplates und CLIs * ES Modules (ESM) in Electron * Electron Fuses * Windows on ARM * Native Node Modules * Distribution * Testen und Debuggen * References * Beitragen * * Entwicklung * ASAR Integrity Auf dieser Seite ASAR Integrity ASAR integrity is a security feature that validates the contents of your app's ASAR archives at runtime. Version support ​ Currently, ASAR integrity checking is supported on: * macOS as of electron>=16.0.0 * Windows as of electron>=30.0.0 [!NOTE] ASAR integrity is fully supported in Mac App Store (MAS) builds and is recommended as a best practice. While MAS-installed applications have their Resources/ folder protected by the system (owned by root), ASAR integrity still provides an additional layer of security. It is especially important if you use Electron's MAS build but distribute your app through channels other than the Mac App Store (such as direct download), since those installations won't have the system-level read-only protections. In order to enable ASAR integrity checking, you also need to ensure that your app.asar file was generated by a version of the @electron/asar npm package that supports ASAR integrity. Support was introduced in [email protected] . Note that this package has since migrated over to @electron/asar . All versions of @electron/asar support ASAR integrity. How it works ​ Each ASAR archive contains a JSON string header. The header format includes an integrity object that contains a hex encoded hash of the entire archive as well as an array of hex encoded hashes for each block of blockSize bytes. { "algorithm" : "SHA256" , "hash" : "..." , "blockSize" : 1024 , "blocks" : [ "..." , "..." ] } Separately, you need to define a hex encoded hash of the entire ASAR header when packaging your Electron app. When ASAR integrity is enabled, your Electron app will verify the header hash of the ASAR archive on runtime. If no hash is present or if there is a mismatch in the hashes, the app will forcefully terminate. Enabling ASAR integrity in the binary ​ ASAR integrity checking is currently disabled by default in Electron and can be enabled on build time by toggling the EnableEmbeddedAsarIntegrityValidation Electron fuse . When enabling this fuse, you typically also want to enable the onlyLoadAppFromAsar fuse. Otherwise, the validity checking can be bypassed via the Electron app code search path. const { flipFuses , FuseVersion , FuseV1Options } = require ( '@electron/fuses' ) flipFuses ( // E.g. /a/b/Foo.app pathToPackagedApp , { version : FuseVersion . V1 , [ FuseV1Options . EnableEmbeddedAsarIntegrityValidation ] : true , [ FuseV1Options . OnlyLoadAppFromAsar ] : true } ) [!TIP] With Electron Forge, you can configure your app's fuses with @electron-forge/plugin-fuses in your Forge configuration file. Providing the header hash ​ ASAR integrity validates the contents of the ASAR archive against the header hash that you provide on package time. The process of providing this packaged hash is different for macOS and Windows. Using Electron tooling ​ Electron Forge and Electron Packager do this setup automatically for you with no additional configuration whenever asar is enabled. The minimum required versions for ASAR integrity are: * @electron/[email protected] * @electron/[email protected] Using other build systems ​ macOS ​ When packaging for macOS, you must populate a valid ElectronAsarIntegrity dictionary block in your packaged app's Info.plist . An example is included below. Info.plist < key > ElectronAsarIntegrity </ key > < dict > < key > Resources/app.asar </ key > < dict > < key > algorithm </ key > < string > SHA256 </ string > < key > hash </ key > < string > 9d1f61ea03c4bb62b4416387a521101b81151da0cfbe18c9f8c8b818c5cebfac </ string > </ dict > </ dict > Valid algorithm values are currently SHA256 only. The hash is a hash of the ASAR header using the given algorithm. The @electron/asar package exposes a getRawHeader method whose result can then be hashed to generate this value (e.g. using the node:crypto module). Windows ​ When packaging for Windows, you must populate a valid resource entry of type Integrity and name ElectronAsar . The value of this resource should be a JSON encoded dictionary in the form included below: [ { "file" : "resources\\app.asar" , "alg" : "sha256" , "value" : "9d1f61ea03c4bb62b4416387a521101b81151da0cfbe18c9f8c8b818c5cebfac" } ] [!NOTE] For an implementation example, see src/resedit.ts in the Electron Packager code. Diese Seite bearbeiten Vorherige ASAR Archiv Nächste Boilerplates und CLIs * Version support * How it works * Enabling ASAR integrity in the binary * Providing the header hash * Using Electron tooling * Using other build systems * macOS * Windows Dokumentation * Erste Schritte * API-Referenz Checklisten * Performance * Sicherheit Tools * Electron Forge * Elektro-Fiddle Community * Kontrolle * Ressourcen * Discord * Bluesky * X * Mastodon * Stack Overflow Mehr * GitHub * Open Collective * Infrastruktur Dashboard Copyright OpenJS Foundation und Electron Mitwirkenden. Alle Rechte vorbehalten. Die OpenJS Foundation hat eingetragene Marken und verwendet Marken. Für eine Liste der Marken der OpenJS Foundation , lesen Sie bitte unsere Markenrichtlinie und Markenliste . Marken und Logos nicht auf der Liste der Marken der OpenJS Foundation sind Marken™ oder eingetragene® Marken ihrer jeweiligen Inhaber. Der Gebrauch von ihnen impliziert keine Zugehörigkeit oder Zustimmung von ihnen. Die OpenJS Foundation | Nutzungsbedingungen | Datenschutzrichtlinie | Satzung | | | Markenrichtlinie | Markenliste | Cookie Policy Hosting and infrastructure graciously provided by

Links found on this page

  1. Zum Hauptteil springen [direct]
  2. Electron [direct]
  3. Dokumentation [direct]
  4. API [direct]
  5. Blog [direct]
  6. Electron Forge [direct]
  7. Elektro-Fiddle [direct]
  8. Kontrolle [direct]
  9. Showcase [direct]
  10. Ressourcen [direct]
  11. Veröffentlichungen [direct]
  12. English [direct]
  13. Español [direct]
  14. Français [direct]
  15. 日本語 [direct]
  16. Português [direct]
  17. Русский [direct]
  18. 中文 [direct]
  19. Prozesse in Electron [direct]
  20. Bewährte Verfahren [direct]
  21. Beispiele [direct]
  22. Entwicklung [direct]
  23. Advanced Installation Instructions [direct]
  24. ASAR Archiv [direct]
  25. Boilerplates und CLIs [direct]
  26. ES Modules (ESM) in Electron [direct]
  27. Electron Fuses [direct]
  28. Windows on ARM [direct]
  29. Native Node Modules [direct]
  30. Distribution [direct]
  31. Testen und Debuggen [direct]
  32. References [direct]
  33. Beitragen [direct]
  34. @electron-forge/plugin-fuses [direct]
  35. node:crypto [direct]
  36. resource [direct]
  37. src/resedit.ts [direct]
  38. Diese Seite bearbeiten [direct]
  39. Sicherheit [direct]
  40. Discord [direct]
  41. Bluesky [direct]
  42. X [direct]
  43. Mastodon [direct]
  44. Stack Overflow [direct]
  45. GitHub [direct]
  46. Open Collective [direct]
  47. Infrastruktur Dashboard [direct]
  48. OpenJS Foundation [direct]
  49. Markenrichtlinie [direct]
  50. Markenliste [direct]
  51. Nutzungsbedingungen [direct]
  52. Datenschutzrichtlinie [direct]
  53. Satzung [direct]
  54. | [direct]
  55. Cookie Policy [direct]