将服务帐户凭据编译成可执行文件?

Compiling Service Account Credentials Into Executable?

我有一个程序(编译成 DLL 以供其他应用程序使用)使用 Google 服务帐户创建一些文件并将其上传到 Google 驱动器。凭据存储在 credentials.json 文件中。我希望能够将此程序发送给客户,但不想让他们读取这些凭据,因为这会带来明显的安全问题。将这些凭据编译到 DLL 中的最佳方法是什么,这样它们就不会以明文形式存在于最终用户可以访问的任何地方?

您可以在您的应用程序中将其硬编码为一个字符串:

var apiKey = "my key";

但是正如上面评论中所说,有人可以反编译IL并看到它。如果需要,这也会使更改变得困难。

或者,您可以在配置文件中对其进行加密。

但是在这些选项中的任何一个,或者实际上 any 选项中,您的应用程序直接与 Google API 对话,任何精明的用户都可以使用一些东西像 Fiddler 一样检查流量并查看密钥(即使是通过 SSL)。

保持 Google API 密钥安全的唯一方法是不要让您的应用程序直接与 Google API 通信。您可以设置自己的 API 作为代理。用户使用每个用户的不同凭据向您的 API 进行身份验证,然后您的 API 与 Google 对话。这样,如果有人行为不端,您就会知道是谁,并且可以禁用他们的凭据。