我正在使用 Electron.js 和 React.js 开发桌面应用程序,并且必须存储一些敏感信息,例如 API 密钥和数据库凭据。因此,我开始挖掘并决定使用混淆方法对 JSON 文件中的数据库凭据进行加密。
现在我有两个SECRET_KEYS,一个用于加密,一个用于混淆。所以我关心的是如何安全地保存这些信息。我对 Electron 不太熟悉,但如果我错了,请纠正我:据我所知,我们没有安全使用自定义环境变量的选项,因为我们需要在本地存储这些变量才能使用在应用程序中。因此,做了一些研究,我发现策略之一是使用某种外部服务来获取这些密钥。
PS:加密密钥将保存在 S3 中,但我仍然需要处理我的 AWS 密钥。
因此,我使用 Github Actions 并在Secrets选项中设置键值。基本上,我有一个工作流程,其中有一个 env 选项来指定我的变量。这个过程发生在我的构建之后。-- 我正在使用 Typescript,因此我必须运行构建脚本将代码转换为 JS。
最后,在我的 Webpack 上,我必须使用EnvironmentPlugin才能访问代码中的环境变量值。
基本上,我完成所有这些过程都是为了不在代码中硬编码我的密钥或将它们存储在本地,但我不太明白硬编码密钥(考虑到我正在使用私有存储库)和拥有这个密钥之间的区别使用 Github Actions 设置键值的过程。因为理论上,Github 会用process.env.MY_KEY值替换 my,对吗?或不?
我的意思是,如果黑客使用某种软件获取我的“源代码”,他是否能够看到我的 KEYS 内容?我使用 Github Actions 执行的过程足够安全,还是只是用来尽可能隐藏我的键值?