Electron ASAR 完整性
2023-02-16 17:16 更新
平台支持
目前只在 macOS 上支持ASAR完整性检查。
要求
Electron Forge / Electron Packager
如果你使用 >= electron-packager@15.4.0
或 >= @electron-forge/core@6.0.0-beta.61
那么将满足所有需求。
其他构建系统
为了启用ASAR 完整性检查,你需要确保 app.asar
文件是由支持 asar 完整性的 asar
npm 软件包生成的。 版本 3.1.0
中引入了支持。
然后,您必须在打包的应用程序 Info.plist 中填充有效的 ElectronAsarIntegrity 字典块。下面包含一个示例。
<key>ElectronAsarIntegrity</key>
<dict>
<key>Resources/app.asar</key>
<dict>
<key>algorithm</key>
<string>SHA256</string>
<key>hash</key>
<string>9d1f61ea03c4bb62b4416387a521101b81151da0cfbe18c9f8c8b818c5cebfac</string>
</dict>
</dict>
有效算法值当前仅为 SHA256。散列是使用给定算法的 ASAR 标头的散列。 asar 包公开了一个 getRawHeader 方法,然后可以对其结果进行哈希处理以生成此值。
Toggling the Fuse(切换保险丝)
ASAR 完整性检查目前默认处于禁用状态,可以通过切换保险丝来启用。有关什么是电子保险丝及其工作原理的更多信息,请参阅电子保险丝。启用此保险丝时,您通常还希望启用 onlyLoadAppFromAsar 保险丝,否则可以通过 Electron 应用程序代码搜索路径绕过有效性检查。
require('@electron/fuses').flipFuses(
// 比如 /a/b/Foo.app
pathToPackagedApp,
{
version: FuseVersion.V1,
[FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: true,
[FuseV1Options.OnlyLoadAppFromAsar]: true
}
)
以上内容是否对您有帮助:
更多建议: