我的Rail3应用程序如何验证来自iPhone应用程序的请求



我想在我的iPhone游戏中添加锦标赛模式,并使用Rails 3应用程序跟踪锦标赛统计数据。基本上,每次比赛结束时,获胜者将使用post请求报告给我的Rails 3应用程序,如…

POST http://myrail3app.com/tourney/matchresults?winner=username

显然任何人都可以监控请求的URL,然后在他们的计算机上一遍又一遍地发出相同的请求并作弊。所以我想通过某种方式来验证Rails 3应用程序上的请求,以确保请求仅来自我的iPhone应用程序。你的想法呢?

谢谢你的智慧!

使用Jason提到的UDID并不一定能阻止某人在桌面浏览器中多次转发。

你有几个选项,这取决于你想要得到的复杂程度:

a)应用程序和rails服务器之间的公钥加密
  • 阅读(iphone):http://developer.apple.com/library/mac/文档/安全/概念/CertKeyTrustProgGuide/iPhone_Tasks iPhone_Tasks.html #//apple_ref/doc/uid/TP40001358-CH208-SW9

  • 和(rails):http://stuff-things.net/2007/06/11/encrypting-sensitive-data-with-ruby-on-rails/

b)你可以使用签名生成服务,类似于Facebook和Amazon在他们的请求中处理签名的方式。
  • 你为应用程序提供了一个秘密密钥(很可能在你的objective c代码中),并生成一个HMAC签名基于你所有的发送给应用程序的参数使用您的密钥(参见http://www.ouah.org/ogay/hmac/)。你然后使用发送过来的参数生成另一个签名Rails端,并比较签名发送(如在铁轨上):OpenSSL::HMAC.hexdigest('sha256', message, key))。如果两个签名都是不同的,你知道有人有吗

  • 看到Facebook(http://developers.facebook.com/docs/authentication/signed_request/)和亚马逊(http://docs.amazonwebservices.com/AWSSimpleQueueService/2007-05-01/SQSDeveloperGuide/SummaryOfAuthentication.html)

c)根据你是否想在你的应用程序和你的rails服务器之间共享其他数据,你可以在rails端实现一个Oauth提供程序。

  • 阅读(rails):http://stakeventures.com/articles/2007/11/26/how-to-turn-your-rails-site-into-an-oauth-provider
  • , (iphone):http://davidquail.com/2009/12/07/oauth-authorization-callback-on-the-iphone-with-webview/

你可以让网站只响应iPhone id的选择列表

NSString *deviceUDID = [myDevice uniqueIdentifier];

相关内容

  • 没有找到相关文章

最新更新