在我的游戏/应用程序 (iPhone) 中,客户端向游戏 http 服务器发送 http 请求(get 或 post)。 请求具有这种形式:
gameserver.com/userId/givebonus/100
例如,这会给 userId 100 的奖励。
现在,我们对服务器请求进行加密,它会变成这样:
gameserver.com/42c34c234c234/ghjghjg4hj32g42jh2/424j23gh4h234h2j34j23
我不会为一些试图解密它以揭示所有这些含义的黑客而大惊小怪, 我担心的是嗅探。 因为一旦黑客知道:
gameserver.com/42c34c234c234/ghjghjg4hj32g42jh2/424j23gh4h234h2j34j23
提供 +100 的奖励它可以不断地不断发送相同的请求。
那么如何防止这种情况呢?
与几个 friend 交谈,这些是可能的解决方案,但它们都不容易实现或更安全:
- 移动所有(大部分)逻辑服务器端。
- 握手第一个请求并仅响应该 mac 地址。 (我认为这行不通)
- 动态更改私有(private)加密 key ?怎么样?
- 加密整个请求,基本上使用 https? (不知道怎么办 :( )
我敢肯定有一个我没有看到的更简单的答案 :P
最佳答案
安全性很难。当您隐含地信任客户端时,安全性是不可能的。你需要考虑你愿意付出多少努力来保护它,以及如果它被泄露你会损失多少。因为除非您基本上在服务器端运行所有内容,否则您可以预料它将受到损害。
如果您只想阻止重放攻击,只需在命令预加密中添加递增的“请求计数”并丢弃任何重复请求即可。
但是不要误以为这是某种“安全”,因为它不是。
关于iphone - 安全网游http get/post请求(如何避免重复发送相同的http-req),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3492984/