Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 如何保护我的C#开源游戏免受黑客攻击?_Security_Open Source_Source Code Protection - Fatal编程技术网

Security 如何保护我的C#开源游戏免受黑客攻击?

Security 如何保护我的C#开源游戏免受黑客攻击?,security,open-source,source-code-protection,Security,Open Source,Source Code Protection,我正在开发一款在线模式的游戏,但它是开源的(SourceForge),任何人都可以下载代码,破解任何检查,并使用被破解的客户端与官方服务器进行游戏 我一直在考虑EXE文件md5检查,但任何人都可以计算真正的md5sum并将其发送到服务器,绕过运行时检查 是否有任何方法确保客户不被修改?我知道我必须使用服务器端检查,因为任何东西都可能被黑客入侵。另一种选择是不提交代码的一小部分,不发布仅在我的计算机中编译的EXE文件,拥有所有文件,但我认为这违反了SourceForge规则。如您所述,您需要检查服

我正在开发一款在线模式的游戏,但它是开源的(SourceForge),任何人都可以下载代码,破解任何检查,并使用被破解的客户端与官方服务器进行游戏

我一直在考虑EXE文件md5检查,但任何人都可以计算真正的md5sum并将其发送到服务器,绕过运行时检查


是否有任何方法确保客户不被修改?我知道我必须使用服务器端检查,因为任何东西都可能被黑客入侵。另一种选择是不提交代码的一小部分,不发布仅在我的计算机中编译的EXE文件,拥有所有文件,但我认为这违反了SourceForge规则。

如您所述,您需要检查服务器上的所有内容。
无论您是否发布源代码(请记住Reflector!),您都不能在任何事情上信任客户机(包括其自身的完整性)

然而,请注意,(理想情况下)你不需要让作弊成为不可能;你只需要让通过欺骗完成任务比合法完成任务更难。
理性的人不会为了完成某件事而欺骗,如果他们能在不欺骗的情况下更容易地做到的话


然而,有些人会因为黑客的挑战而作弊,即使这比正常情况下要难。

正如你所说的,你需要检查服务器上的一切。
无论您是否发布源代码(请记住Reflector!),您都不能在任何事情上信任客户机(包括其自身的完整性)

然而,请注意,(理想情况下)你不需要让作弊成为不可能;你只需要让通过欺骗完成任务比合法完成任务更难。
理性的人不会为了完成某件事而欺骗,如果他们能在不欺骗的情况下更容易地做到的话


然而,有些人会因为黑客的挑战而作弊,即使这比平时更难。

你害怕什么样的作弊?那么你的问题是,如何检测客户是否被修改?这是一个回合制游戏(酒店棋盘游戏,类似垄断),所以你有你的钱,你可以修改你的钱的数量和任何有利于其他玩家的东西。最好的办法是让黑客变得非常困难(没有源代码,检查客户端修改),但这似乎是不可能的,呵呵。谢谢你害怕什么样的欺骗?那么你的问题是,如何检测客户是否被修改?这是一个基于回合的游戏(酒店棋盘游戏,类似垄断),所以你有你的钱,你可以修改你的钱,以及任何对其他玩家有利的东西。最好的办法是让黑客变得非常困难(没有源代码,检查客户端修改),但这似乎是不可能的,呵呵。谢谢同样,不要向客户发送任何超出其需要的信息。我假设所有玩家都有一些共享的游戏状态,每个玩家都有一个局部视图。您可以在服务器端验证客户端是否发送了非法命令,但确保客户端未查看机密信息(如wallhacking)的唯一方法是将客户端可用的游戏状态信息量降至最低。请记住,没有程序是不可破解的。如果机器能读机器代码,那么意志坚定的人也能读。如果编译器可以编写机器代码,那么意志坚定的人也可以。还有像反编译器这样的东西,它可以轻松地将机器代码转换成可读性稍高的代码。请注意:人们会为了在多人游戏中获胜而作弊。这是一个在线游戏的诅咒,需要通过在服务器上安装大部分(如果不是全部的话)游戏逻辑来修复。感谢您的评论,它们非常有用:)结论是:检查服务器端的所有内容:)同样,不要向客户端发送任何超出其需要的信息。我假设所有玩家都有一些共享的游戏状态,每个玩家都有一个局部视图。您可以在服务器端验证客户端是否发送了非法命令,但确保客户端未查看机密信息(如wallhacking)的唯一方法是将客户端可用的游戏状态信息量降至最低。请记住,没有程序是不可破解的。如果机器能读机器代码,那么意志坚定的人也能读。如果编译器可以编写机器代码,那么意志坚定的人也可以。还有像反编译器这样的东西,它可以轻松地将机器代码转换成可读性稍高的代码。请注意:人们会为了在多人游戏中获胜而作弊。这是一个在线游戏的诅咒,需要通过在服务器上安装大部分(如果不是全部的话)游戏逻辑来修复。感谢您的评论,它们非常有用:)结论是:检查服务器端的所有内容:)