经过大量和积极的搜索,我对如何防止在 Flash 游戏中使用套接字进行某些多人游戏功能时出现的安全问题一无所知。令人惊叹的 ECMAScript 兼容/类似语言的源代码很容易访问,这使得他妈妈地下室里每一个被动攻击的 Nerd 都能找到获取攻击向量的关键信息。
他们找到服务器的 IP、服务器正在监听的端口,并在几秒钟内 - 他们正在远程登录并发送数据字符串。而且由于 JSON 非常开放并且很容易被人类解释,它在客户端被字符串化并在服务器端被解析,我不知道如何防止这样的消息通过(在他们找到服务器正在寻找的命中点之后) , 在 swf 中很容易找到):
例子:
{ "request_type" : "WRITE_HS", "name" : "GloriousNerd", "highscore" : 9999999 }
他们的要求被认定为真实的,分数被记录下来,光荣的 Nerd 取得了胜利。可以做同样的事情来创建无穷无尽的负载高分请求流,这些请求返回许多项目,阻塞带宽和系统以处理真正的请求。
我保留了一些标准方法,扫描“不可能的结果”和将 IP 列入黑名单等,但没有什么能阻止它。它始终是一个后缀操作。与我交谈过的每个人都说这是一场失败的战斗。小林丸?
有没有办法阻止访问并对游戏和服务器可以唯一共享的某些信息进行编码?公钥、私钥、任何类型的加密都很容易找到和复制。而 JSON 只是坐在那里,赤身裸体。有什么方法可以确保它通过 SWF 并且仅通过 SWF?
不诉诸身份验证,我希望人们尽快玩。在我看来,防止作弊的唯一方法是生成一个帐户并通过成就为其增值。但是,仍然有一些人只想看着世界燃烧。
你能不能在我的 socket 上写一些智慧的话?我一切顺利。
最佳答案
你可能会让黑客难以为继:
- 在客户端和服务器端使用加密(例如 AMF)
- 验证服务器上的每个客户端请求
- 建立强大的逻辑消息交换
等等……
关于javascript - TCP 套接字、JSON 和安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12551592/