我对整个过程可能有点多疑,但我想做正确的事情,以确保只有合法的用户才能为我们的服务创建帐户,我们不包括嵌入在二进制文件中的(可能是反向工程的)。
我们想做一个‘使用推特登录’和“登录到Facebook",我们可以使用各自的authToken。
例如:
与Twitter
正如这里提到的,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,我们如何在我们的服务器上验证这个信息,以确保这实际上是合法的?
它的最佳实践是什么?
发布于 2015-01-13 00:59:51
让我们把这个问题转过来一会儿。恶意用户完全控制了客户端的副本(总是这样),他们能用它做什么呢?
攻击者可以通过您的客户端使用他们控制的任何帐户进行身份验证。然后,他们可以使用您的凭据进行Twitter/Facebook调用。这有问题吗?由于攻击者拥有这些帐户的凭据,因此无法为他们提供任何他们尚未拥有的控制。他们可以用它来耗尽API的速率限制,他们的活动可能显示来自你的应用程序,但没有什么可以做的,以阻止这一点,同时仍然允许使用你的应用程序。也许它提供了一个使您的API凭据可更新的理由,但是任何更新都会发送给善意的和恶意的用户。
你还看到了什么威胁?如何使用这些权限,以及如何利用这些权限?
您是否识别使用这些帐户的用户?控制客户端的攻击者可以使用它生成带有假凭据的新帐户,或者试图控制其他用户的帐户吗?
您是否正在存储或传输由此产生的oauth会话凭据?攻击者能拦截它们以控制其他用户帐户吗?
发布于 2015-01-13 01:02:14
关于保护消费者的秘密等安全问题,这里还有一个非常好的答案:How to keep the OAuth consumer secret safe, and how to react when it's compromised?
回答另一个问题,验证后端的用户身份:您应该做的是将代表用户使用twitter或facebook所需的auth令牌传输到后端(当然,最好是通过SSL等安全方式),并从后端发出类似于GET /v2.2/me (facebook )的请求。现在,您可以比较这些数据,并知道用户确实为您提供了一个真实的facebook或twitter帐户。
发布于 2015-01-13 17:36:45
Twitter/FB为用户提供标识,但不提供应用程序。您应该为客户端应用程序提供单独的凭据(以告诉服务器端这是一个受信任的应用程序)。在这种情况下,服务器端可以信任应用程序的通信。
https://stackoverflow.com/questions/27913151
复制相似问题