gpt4 book ai didi

php - 如何通过套接字安全地发送二进制数据并确保没有人可以重新发送它?

转载 作者:可可西里 更新时间:2023-11-01 02:51:32 24 4
gpt4 key购买 nike

首先,我将统计我正在构建的内容,以便如果有人对我的问题有替代解决方案。

Soo,基本上有一个游戏有多人游戏选项。

我拥有一个服务器..但是,存在一个问题,即人们向那里的游戏添加非法模组,以便能够在服务器中获得不公平的机会。

所以我的想法是为游戏创建一个自定义启动器,基本上首先检查游戏是否经过修改,如果没有,它会向玩家调用的服务器发送 TCP 请求 BLA IP xx.xx.xx 没有任何模组,现在要加入。

顺便说一下,连接是通过 AES128 加密保护的。


现在谈谈我的实际问题。

Soo.. 当我创建加密/解密系统时。 (它是 AES 和 base64 的混合),我注意到人们可以嗅探套接字,然后复制从启动器发送到服务器的散列​​,然后使用任何套接字客户端应用程序简单地按原样发送该散列而无需修改。

然后服务器会简单地认为发射器发送了它并且实际上相信它然后允许该播放器:/

所以我要问的是,有什么办法可以解决这个问题吗?例如创建一种方法,使哈希只能使用一次。

非常感谢您提供的任何帮助。并且还接受了套接字以外的替代解决方案:)

最佳答案

这里有几个问题需要讨论,例如如何使加密通信不可重放,最终令人沮丧的是,即使解决问题也无法真正使系统安全。

要修复加密通信的可重播性,您可以使用已经防止这种情况的协议(protocol)(例如 SSH),或者推出您自己的解决方案并让您的服务器向客户端发送一个大的随机数,然后包括这个数字在包含哈希的加密有效负载中。然后,服务器可以轻松验证返回的数字是否与其生成的数字匹配,以确保没有重播整个有效负载。

然而,这里的问题与困扰客户端计算机上运行的所有 DRM 解决方案的问题相同,即您的代码可能会受到损害和调试。没有什么可以阻止攻击者简单地调试您的代码并找到您的加密 key ,从而能够制作他们自己的消息来表明他们的客户端是有效的。

这显然比简单的重放攻击更难,但如果您的游戏/服务器以任何方式流行,这不仅是可能的,而且很有可能。更复杂的客户端安全模型已被破坏,最终没有真正的方法使它们不可能,只是更困难(除了一些专用硬件解决方案)。

唯一真正的解决方案是确保客户端无法在服务器端占据优势。这意味着所有客户端操作都经过服务器端验证,并且客户端知识仅限于他们应该拥有的信息。不幸的是,这并不总是可以完美地完成,这就是为什么最流行的游戏仍然存在墙黑客和其他作弊的原因。

关于php - 如何通过套接字安全地发送二进制数据并确保没有人可以重新发送它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32571674/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com