0

我的目标是通过 REST 从 Android 游戏中读取并安全发布高分。我找到了一个问题和一个好的建议作为答案。

我对已接受的答案有疑问。我会将密钥硬编码到应用程序中,并使用它对 url 进行 md5 加密。结果作为参数附加到 url 本身(参见链接发布的答案)。当我另外使用 SSL 时,我认为这对我的情况没有好处。我也需要使用私钥,当有人破解和反向工程我的应用程序时,他会得到 SSL 私钥和私钥。我不发送密码或一些关键数据,只是一个用户输入的名字或一个带有分数的昵称,也许还有一个国家。有根电话的人可以看到 URL,但不能用这种方法伪造服务器上的高分,不是吗?因此,如果我省略 SSL 并只使用 HTTP 而不是 HTTPS,它对我没有任何不利,对吧?或者我没有这种方法有什么问题' 不考虑?(如果可能的话,我想省略 SSL,因为它更容易实施,而且在 Google Play 中使用加密应用程序时美国出口法规的这个问题对我来说太麻烦了,无法将高分发送到服务器)。

4

3 回答 3

4

当我另外使用 SSL 时,我认为这对我的情况没有好处

这将使某人更难以嗅探流量并查看您的密钥。

有根电话的人可以看到 URL,但不能用这种方法伪造服务器上的高分,不是吗?

他们当然可以使用您的密钥执行 HTTP 请求。他们不需要 root 手机来查看密钥。我不能说他们是否需要 root 手机才能使用 HTTP 请求的结果。

因此,如果我省略 SSL 并只使用 HTTP 而不是 HTTPS,它对我没有任何不利,对吧?

跳过 SSL 将使某人更容易使用代理服务器或其他形式的流量嗅探器来查看您的密钥。

使用加密应用程序时美国政府津贴的问题

我不知道你在说什么。

于 2013-11-03T18:44:53.457 回答
0

SSL 只会阻止客户端和服务器之间的嗅探。如果您不打算在客户端和服务器之间发送任何机密信息,那么使用 SSL 是没有意义的。发送在您的应用程序中硬编码的“秘密”密钥是一个坏主意:反编译应用程序将意味着该密钥不再是秘密的。

有根电话的人可以看到 URL,但不能用这种方法伪造服务器上的高分,不是吗?

任何拥有“密钥”的人都可以发出 HTTP(s) 请求并设置他们想要的任何 hiscore。永远不要相信你的客户!您应该在服务器本身上计算 hiscore,然后将其返回给客户端。最好不要反过来。

于 2013-11-03T18:55:59.697 回答
0

您正在散列 URL 的一部分,如下所示:

http://yourserver/?key=hashed_value&score=100

但这根本不安全,客户端仍然可以看到URL 并进行自己的 POST,如下所示:

http://yourserver/?key=hashed_value&score=300

黑客使用的哈希值与您的应用程序使用的相同。

必须使用 HTTPS 来实现所需的目的。

请注意,我在示例中使用了“GET”,但 POST 是相同的,如果不是 HTTPS,您可以看到整个 HTTP 请求

于 2014-04-22T16:49:54.997 回答