我正在写一个Gmail 的 bash 脚本它将使用 OAuth2 授权自己,并使用收到的令牌进行 API 调用。有效。
但现在我陷入了思考如何安全地存储客户端 ID 和客户端密钥在我的脚本中,该脚本对所有人开放在 GitHub 上。自从泄露了自己的客户端密钥和客户端 ID这不是一个好主意,因为其他人可以轻松地用自己的应用程序来伪装他们的应用程序。我该如何处理这个问题?
简而言之,问题如下:
- 我的程序迫切需要客户ID和客户秘密上班。
- 我的程序是开源的,因此我不能将它们直接包含在代码中。
- 我希望所有下载我的程序的用户都能够使用我自己的一套客户ID和客户秘密,而他们实际上不知道什么客户ID和客户秘密是!
基本上,我需要想出一种方法,通过或绕过 GitHub 将一些秘密数据从我的终端传输到用户的 PC,这样只有程序(我的脚本)必须能够读取它,不是用户!
我知道这似乎不可能,但我发布了这个问题来验证是否可能。如果可以的话,我想知道怎么做。
答案1
不;您将需要一个云/服务器组件/代理来将秘密添加到每个请求(无论编程语言如何)。
当然,人们确实尝试隐藏本地副本,但这对他们来说永远不会成功。
代理示例:
client> curl my.server.com/list/1
server> curl api.mail.google.com/list/1?key=123
因此您的代理只需传递所有参数/标头/数据并将您的 ID 和 Secret 添加到请求中。这可能会导致服务器上占用大量带宽,因此您应该考虑添加一个选项来使用自己的 Secret,而无需为重度用户提供代理。