【问题标题】:parse save game highscore secure解析保存游戏高分安全
【发布时间】:2015-09-09 07:39:55
【问题描述】:

我想将 Android 游戏中的分数保存到 te parse.com 后端。 所以我将创建一个 ParseObject 并将其保存在后台:

ParseObject gameScore = new ParseObject("GameScore");
gameScore.put("score", 1337);
gameScore.put("playerName", "Sean Plott");
gameScore.saveInBackground();

现在有人可以对我的 Android 应用程序进行反向工程,获取解析客户端密钥和应用程序 ID,并为他的用户 parse.com 后端写下他想要的任何高分? 或者 Parse 是否已经以某种方式阻止了这种情况?

谢谢

【问题讨论】:

  • 加个混淆器怎么样?
  • 是的,这是有可能的,但也不是 100% 保存。我的问题是我是否需要一些额外的安全性来将分数写入解析,或者解析的概念(api_key,client_key)是否“足够节省”??

标签: android security parse-platform


【解决方案1】:

是的,您需要额外的安全措施,这些 API 密钥可能会被盗。

混淆是防止有人对您的代码进行逆向工程的第一步。然而,API 密钥之类的东西通常存储为String,因此它们不会被混淆。没有真正完美的解决方案。无论您做什么,致力于它的人都可以窃取它。但是有一些方法可以使这个过程更加困难

一些例子:

  • 使用 NDK
  • 使用加密
  • 在 png 文件中隐藏数据
  • 设置您的应用程序将不带 API 密钥的请求发送到代理服务器以接收请求,将 API 密钥附加到请求的末尾,发送请求,然后接收请求的响应并将其返回给您的申请
  • 为了保护您的公钥免受恶意用户和黑客的攻击,请勿将其作为文字字符串嵌入任何代码中。相反,在运行时从片段构造字符串或使用位操作(例如,与其他字符串进行异或)来隐藏实际密钥。密钥本身不是秘密信息,但您不想让黑客或恶意用户轻易地用另一个密钥替换公钥。 http://developer.android.com/google/play/billing/billing_best_practices.html

有关该主题的更多信息:

http://www.androidauthority.com/how-to-hide-your-api-key-in-android-600583/ http://www.informit.com/articles/article.aspx?p=2268753&seqNum=4

相关的 SO 问题:

Best Practice for storing private API keys in Android

How to store a secret API key in an application's binary?

【讨论】:

  • 谢谢,您提到了代理服务器解决方案。但是每个人都可以将请求发送到代理并发出请求吗?使用此解决方案,没有比将密钥直接存储在应用程序中更安全的方法了吗?
猜你喜欢
  • 1970-01-01
  • 2013-05-19
  • 2016-11-06
  • 2015-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多