在开发我的在线游戏时,我试图了解更多关于安全的知识。
截获从服务器发送的数据包、使用某些软件修改数据包并将数据发送回服务器是否可能,以及有多困难?
下面是一个场景:
玩家与AI敌人进行战斗。一个玩家输掉了这场战斗,在战斗结束时,数据包被发送回服务器,记录发生的事情。是否可以在发送之前修改此数据包,并告诉服务器玩家已经赢得了这场战斗?如何读取并修改这些数据?
是否有可能说玩家与1个敌人进行了一场战斗,但向服务器发送一个数据包说玩家赢得了与20个敌人的战斗?(假设服务器没有保护自己免受此影响的实现)
考虑到您的场景,如果您假设客户端和服务器之间的数据包已加密,那么发生攻击的可能性相当低(当然这取决于使用的加密)。
但是让我们考虑一下未加密的数据包,中间人攻击可能是可能的,并且不难执行。这需要攻击者能够理解您正在发送的数据包:例如,如果您在某个地方有一个“赢/输”位并且攻击者知道它的确切位置,那么他可以制作一个不同的数据包(如果您喜欢制作数据包,请查看python中的scpy
模块)。
有很多拦截数据包的工具,最常见的是Wireshark。例如,Scapy模块允许您嗅探数据包并同时发送数据包,从而简化此场景。
同时战胜20个场景还取决于服务器如何处理游戏(例如,它是否一次接受每个用户多个游戏?)
问题内容: 我正在制作客户端服务器MMO风格的游戏。到目前为止,我已经建立了框架,以便服务器和客户端相互交互以提供状态更新。服务器维护游戏状态并定期计算下一个状态,然后每隔一段时间(每n毫秒)将其发送给所有客户端。用户可以在客户端查看此新状态并做出反应。然后,将这些操作发送回服务器进行处理,并发送给下一次更新。 明显的问题是这些更新在服务器和客户端之间传播需要花费时间。如果客户端采取行动攻击敌人,
实习,捕鱼棋牌类项目 # 一面 7/26 21min ## C++ 栈和堆的区别 const int *p 和 int * cont p 的区别 const 对象能调用全部成员函数吗 继承 public private protected 的区别 class struct 怎么计算大小 内存对齐是什么,为什么要内存对齐,内存对齐的规则 小端大端的区别 ## Unity Awake Enable S
我想要将获得的统计数据存储在服务器端数据库中,但我不太确定基本值。具体到一款移动游戏,我在想应该尽量减少来回传递的数据量。 在客户端存储这些项目/字符的基本值,使用Prefab/Scriptable对象(我使用的是Unity)是不是一个坏主意?战斗将在客户端进行,服务器主要处理对玩家游戏数据数据库的读/写。玩家之间的主要互动将不会是玩家之间的实时战斗,而是类似于氏族冲突的东西。
我想做的是: 为了学习游戏编程,我使用专用服务器和UDP创建了一个回声设置。专用服务器在不同的城市(也就是不在我的本地网络中)。 在我的本地计算机上,我有一个udp客户端和服务器(两个不同的程序)。当我第一次启动python服务器时,windows防火墙立即询问我是否要添加异常。在允许我的python服务器联网之后,我仍然没有收到任何消息。(客户- 我的问题是: 游戏如何解决这个问题?我没有为我想
我想在一些计算机之间建立点对点连接,这样用户就可以在没有外部服务器的情况下聊天和交换文件。我最初的想法如下: 我在服务器上制作了一个中央服务器插座,所有应用程序都可以连接到该插座。此ServerSocket跟踪已连接的套接字(客户端),并将新连接的客户端的IP和端口提供给所有其他客户端。每个客户端都会创建一个新的ServerSocket,所有客户端都可以连接到它。 换句话说:每个客户端都有一个Se
我正在为一个大学项目创建一个游戏服务器,所以我不使用任何库/框架。 经过大量研究后,我希望客户端和服务器使用UDP协议进行大量通信,例如角色移动和计时器,因为这方面的可靠性并不重要,丢失的数据包可以得到补偿。 但是,我还想将TCP协议用于游戏的其他方面,例如操作和事件,在这些方面,信息到达客户端是至关重要的。 我的问题是,我对使用UDP不太了解,在Java,从我的理解来看,它完全不同于仅仅为TCP