Aller au contenu principal

Intégrité de l'ASAR

Plateformes prises en charge

Actuellement, la vérification de l’intégrité de l'ASAR n’est prise en charge que sur macOS.

Spécifications requises

Electron Forge / Electron Packager

Si vous utilisez >= electron-packager@15.4.0 ou >= @electron-forge/core@6.0.0-beta.61 toutes les conditions sont remplies automatiquement pour vous et vous pouvez passer à Basculer le fusible.

Autres systèmes de génération

Pour activer la vérification de l’intégrité ASAR, vous devez vous assurer d'abord que votre fichier app.asar a été généré par une version du package npm asar qui prend en charge cette intégrité asar. Le support a été introduit dans la version 3.1.0.

Vous devez ensuite remplir un bloc de dictionnaire ElectronAsarIntegrity valide dans la Info.plist de vos applications empaquetées . Voici donc un exemple.

<key>ElectronAsarIntegrity</key>
<dict>
<key>Resources/app.asar</key>
<dict>
<key>algorithm</key>
<string>SHA256</string>
<key>hash</key>
<string>9d1f61ea03c4bb62b4416387a521101b81151da0cfbe18c9f8c8b818c5cebfac</string>
</dict>
</dict>

Les valeurs de algorithm valides ne comprennent pour le moment que la valeur SHA256. Le hash est un hachage de l’en-tête ASAR effectué à l’aide de l’algorithme donné. Le package asar expose une méthode getRawHeader dont le résultat peut ensuite être haché pour générer cette valeur.

Basculement du fusible

La vérification de l’intégrité de l'ASAR est actuellement désactivée par défaut et peut être activée en basculant un fusible. Voir Electron Fuses pour plus d'informations sur ce que sont les fuses Electron et comment ils fonctionnent. Lorsque vous activez ce fusible, c'est que généralement, vous désirez aussi activer le fusible onlyLoadAppFromAsar , sinon la vérification de la validité peut être contournée via le chemin de recherche du code de l’application Electron.

const { flipFuses, FuseVersion, FuseV1Options } = require('@electron/fuses')

flipFuses(
// E.g. /a/b/Foo.app
pathToPackagedApp,
{
version: FuseVersion.V1,
[FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: true,
[FuseV1Options.OnlyLoadAppFromAsar]: true
}
)