【问题标题】:Best Practice to Verify Facebook/Twitter Connect. (Prevent reverse-engineering keys)验证 Facebook/Twitter 连接的最佳实践。 (防止逆向工程密钥)
【发布时间】:2015-03-10 21:04:38
【问题描述】:

总的来说,我可能对整个过程有点偏执,但我想做正确的事情,以确保只有合法用户才能为我们的服务创建帐户,并且我们不包括嵌入在我们的二进制文件中的 api 秘密,可能是“逆向工程”

我们想做一键式'Sign In With Twitter"和"Sign in With Facebook",我们可以使用各自的SDK来获取authToken。

例如:

使用 推特

这里提到https://dev.twitter.com/twitter-kit/ios/twitter-login 从 SDK 提供以下信息,

authTokenproperty
authTokenSecretproperty
userNameproperty
userIDproperty

但我必须将密钥嵌入 [[Twitter sharedInstance] startWithConsumerKey:@"your_key" consumerSecret:@"your_secret"];

我们要验证这个 authToken 实际上是合法的,我们的服务器需要验证这个信息。构建整个流程的正确方法是什么?

使用 Facebook

FBSession *session = [[FBSession alloc] initWithAppID:APP_ID permissions:permissions
 urlSchemeSuffix:nil tokenCacheStrategy:[[FBSessionTokenCachingStrategy alloc]
 initWithUserDefaultTokenInformationKeyName:@"TEST"]];`

如果黑客能够对这个 APP_ID 或 Twitter 密钥进行逆向工程,我们如何在我们的服务器上验证这些信息以确保这实际上是合法的?

最佳实践是什么?

【问题讨论】:

    标签: ios objective-c facebook twitter reverse-engineering


    【解决方案1】:

    让我们把这个问题转一转。恶意用户可以完全控制客户端的副本(通常情况下),他们可以用它做什么?

    攻击者可以使用他们控制的任何帐户通过您的客户端进行身份验证。然后,他们可以使用您的凭据进行 Twitter/Facebook API 调用。这是一个问题吗?由于攻击者拥有这些帐户的凭据,因此不会为他们提供他们尚未拥有的任何控制权。他们可以使用它来耗尽 API 速率限制,并且他们的活动可能会显示为来自您的应用程序,但在仍然允许使用您的应用程序的同时,您无法阻止这种情况。也许它提供了使您的 API 凭据可更新的理由,但任何更新都将发送给善意和恶意用户。

    您还看到了哪些其他威胁?如何使用这些权限以及如何利用它们?

    您是否确定使用这些帐户的用户?控制客户端的攻击者是否可以使用它来生成具有虚假凭据的新帐户或尝试控制其他用户的帐户?

    您是否存储或传输生成的 oauth 会话凭据?攻击者能否拦截它们以控制其他用户帐户?

    【讨论】:

      【解决方案2】:

      关于保护消费者秘密等安全,这里有一个很好的答案的另一个 SO 问题:How to keep the OAuth consumer secret safe, and how to react when it's compromised?

      回答另一个问题,在您的后端验证用户身份:您应该将代表该用户使用 twitter 或 facebook API 所需的身份验证令牌转移到您的后端(当然最好以安全的方式通过SSL 等),并从后端发出类似GET /v2.2/me(facebook graph api)的请求。现在您可以比较数据并知道用户确实为您提供了一个真实的 facebook 或 twitter 帐户。

      【讨论】:

        【解决方案3】:

        Twitter/FB 为用户提供标识,但不是您的应用。您应该为您的客户端应用程序提供单独的凭据(告诉您的服务器端这是一个受信任的应用程序)。在这种情况下,您的服务器端可以信任来自您的应用的通信。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-05-06
          • 1970-01-01
          • 2012-02-05
          • 2019-07-30
          • 2011-09-23
          • 2015-10-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多