security - 客户端服务器游戏包注入
问题描述
在开发我的在线游戏时,我正在尝试更多地了解安全性。
拦截从服务器发送的数据包,使用某些软件对其进行修改并将数据发送回服务器是否有可能以及有多困难?
这是一个场景:
玩家进入与 AI 敌人的战斗。玩家输掉了战斗,在战斗结束时,数据包被发送回服务器,说明发生了什么。是否可以在发送之前修改此数据包并告诉服务器玩家已经赢得了战斗?人们将如何读取这些数据并对其进行修改?
有没有可能说玩家进入了与 1 个敌人的战斗,但向服务器发送了一个数据包,说玩家赢得了与 20 个敌人的战斗?(假设服务器没有实现保护自己免受这种情况的影响)
解决方案
考虑到您的情况,如果您假设客户端和服务器之间的数据包是加密的,那么发生攻击的可能性相当低(当然这取决于所使用的加密)。
但是让我们考虑未加密的数据包,中间人攻击是可能的并且不难执行。这将要求攻击者能够理解您正在发送的数据包:例如,如果您在某处有一个“赢/输”位并且攻击者知道它的确切位置,那么他可以制作一个不同的数据包(scapy
如果你正在制作数据包)。
有截取数据包的工具,最常用的是Wireshark
. 例如,该Scapy
模块允许您同时嗅探数据包和发送数据包,从而使这种情况变得容易。
一次战胜 20 人的情况还取决于服务器端如何处理游戏(例如,它是否一次接受每个用户多个游戏?)
推荐阅读
- algorithm - 按升序排列对角矩阵
- azure - Azure devops 自动从部署组中删除目标虚拟机
- reactjs - 如何通过按 ENTER 键在反应待办事项应用程序中添加任务?
- flutter - 许可处理程序 - 位置不起作用(颤振)
- javascript - 如何通过axios获取请求/响应的总记录(X-Total-Count)?
- node.js - 部署到 vercel
- react-native - 使用 zoho 图像获取 api 时,如何在本机反应中解决图像数据响应为 null 的问题?
- android - 如何在 android 中制作 Gpay QR Scanner 角样式?
- html - 我应该在源代码中复制 img 默认 src -
- tcl - 如果用户在 tcl 中输入产品 id 和数量,如何编写脚本来生成账单摘要?