【发布时间】:2013-12-01 02:45:50
【问题描述】:
这就是我想要做的。
我有一个游戏和一个服务器可执行文件。客户端连接到服务器进行播放。
我目前担心的是有人可能会使用 telnet 或其他东西来模拟客户端。
目前,用户只在连接后发送一个简单的 hello 字符串,如果正确,我会接受来自他们的数据。
我尝试使用证书/ssl 没有成功,因此我试图找出一种有效的方法来了解游戏客户端是否真的是客户端。
简单地说,验证客户端的有效方法是什么?
我不关心中间人攻击,因为用户不登录也不提供密码,只是一个会话名称。
我想到了服务器发送一个固定长度的随机字符串的可能性,然后客户端用算法修改这个字符串,然后将它发送回来。
我想知道是否有比这更好的更聪明的方法。
我的服务器确实有一个证书,它是一个 pfx,如果有帮助的话。
谢谢
【问题讨论】:
-
很抱歉,如果用户不提供用户名/密码,那么保护您的服务器有什么意义呢?如果任何人都可以连接,那么任何人都没有必要模仿客户端。
-
@PawełStawarz 我同意,但如果他们可以冒充客户端,他们可能会发送格式错误的游戏消息,这可能会导致服务器冻结或崩溃。
-
如果您没有命令服务器崩溃或冻结的消息,它们就不能。但是他们可以 DoS 或“Ping of Death”你,如果是这样,你的问题就在其他地方。
-
@Milo 您认为您的问题是“如何确保服务器可以信任客户端”,但事实是,您无法确保它。你的整个问题只是被误导了。您必须以一种不信任其客户端的方式设计您的服务器。实际上,任何理智的服务器都必须对它从客户端获取的数据极度偏执。
-
我支持 syam。虽然测试您的连接的明显有效性可能会带来一点好处,但您仍然需要假设它们是敌人,并进行基本的错误检查,并且只接受您想要并且可以处理的表单的输入。
标签: c++ c algorithm security client-server