【问题标题】:Open source a project but keep API keys confidential开源项目但对 API 密钥保密
【发布时间】:2013-02-02 13:11:25
【问题描述】:

我想使用 GitHub API 创建一个开源项目,但在源代码中包含我的密钥时遇到了问题。我从不同的地方读过,从来没有在源代码中包含任何密钥,我同意这一点。我还发现了一些关于通过网络服务器进行身份验证而不是让用户获取自己的 API 密钥的模糊参考。

据我了解,它会是这样的:

当需要通过 GitHub 进行身份验证时,我会让用户向我的服务器发送请求。从那里,我将使用自己的 API 密钥向 GitHub 进行身份验证,并在成功身份验证后,将签名返回给发出请求的用户。从那时起,他们可以直接与 GitHub 通信。那是对的吗?

如果它是这样工作的,我很想知道更多关于这个过程的信息。这是我第一次使用 API,所以我对此很陌生。

【问题讨论】:

    标签: api authentication github


    【解决方案1】:

    我从来没有收到过这个问题的答案,所以我想我会传递我在此期间发现的内容。

    开源使用 API 的项目的主要问题是泄露您的客户端机密(至少在 GitHub 的情况下,这就是我发布这个问题的原因)。您永远不应该在源代码中包含您的客户端密码。如果有人知道您的客户端密码和客户端 ID,他们可以有效地模拟您的应用程序。

    所以,剩下两个选择。

    1)。运行您自己的简单服务器。

    2)。要求每个 fork 项目的人都获得自己的 GitHub API 密钥。

    我建议使用选项 2。如果您将应用程序开源,那么它就不再是您的了,而且您对其他人将如何使用它没有发言权。那么,您为什么要对其他人的应用程序在使用您的客户端 ID 和密码时所做的事情负责?

    这里还有另一个问题。一旦您通过 GitHub 进行身份验证并获得 Auth Token,您需要以某种方式安全地存储该 Auth Token。起初我没有意识到,但它基本上是一个密码。如果您以纯文本形式存储 Auth Token 并且其他人恢复了它,他们可以向 API 发出请求并检索所有用户数据。 (这是使用 OAuth2 和不记名令牌。)

    在客户端上存储身份验证令牌确实不是一个好方法。当您尝试开源您的项目时,这也会带来另一个问题。无论谁使用您的开源项目,基本上都需要使用他们自己的服务器进行初始身份验证,然后还要存储身份验证令牌。

    只是一些需要记住的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-05
      • 2019-01-04
      • 1970-01-01
      • 2018-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多