MMO是否需要了解黑客机制?


10

说我正在计划,将来(不是现在!我需要首先学习很多东西)希望参加一个小组项目,该小组项目将制作大型多人在线游戏(mmo),而我的工作将是网络一部分。我对网络编程不是很熟悉(我读过一本关于PHP,MYSQL的非常基础的书,并且对WAMP有点了解)。

在学习PHP和MYSQL的过程中,我应该研究黑客吗?在端口扫描,路由器黑客等中进行黑客攻击。在MMO中​​,人们总是在试图欺骗,机器人等,但最糟糕的情况是有人入侵数据库。这只是我的构想,我真的不知道。但是,我确实非常了解网络,例如子网划分/端口/ IP(本地/全局)/ etc。

以您的专业意见,(如果您理解该主题,请启发我)我是否应该了解这些事情以应对这种情况的发生?

另外,除了我提到的内容(端口扫描,路由器黑客攻击)之外,还有其他与黑客攻击有关的事情值得我关注吗?我对网络的恶意/安全方面不太熟悉。

还有一个注意事项:我不是要学习如何破解的小孩子。我只是想在上大学之前尽可能多地学习,而且我真的需要知道是否需要学习。


10
如果您“对网络编程不那么熟悉”,那么编写可以扩展到足以被认为“庞大”的数字的后端服务器系统对您来说要比骇客要大得多。您确定要制作MMO,而不仅仅是普通的多人游戏吗?

1
我知道了; 问题的措辞确实听起来像是您正在尝试处理此MMO。

7
因此,您对网络不熟悉,打算做一个MMO(这是您可以计划的最难的事情),然后问自己是否真的需要学习如何防御黑客。嗯 当然可以,而且您知道。问这个有什么意义?
o0'。

2
相关信息,gamedev.stackexchange.com/a/21598/6937简短回答,如果您听说过迭代开发,则可以用相同的方式来学习。事后,安全性往往会起到补充作用。在制造安全的MMO服务器之前,只需制造一台mmo服务器,在此之前,请阅读链接文章的答案
brandon 2012年

1
这就像一个14岁的年轻人,想当总统,问他未来的西装最适合搭配什么领带。那个孩子可能不会成为总统,即使他是总统,他也会比领带更重要。您可能不会通过“小组项目”成功创建MMORPG,如果您这样做,那么您将遇到更大的问题。
Thomas Bonini 2012年

Answers:


16

是的,开发任何多人游戏的团队中的某个人(实际上是多个人),无论规模大小,都应该对硬件和软件级别的网络安全概念有深入的了解。

对于涉及很多代理机构持久性的游戏而言,尤其如此,因为这构成了玩家方面的投资,因此,这是使黑客赚钱的目标。

在大学学习网络/网络安全/一般安全(密码学等)课程将有助于为您提供一些必要的背景知识,以成为上述开发人员之一。


11

了解一些关于安全性是想写一个多人游戏之前是个好主意,但事情像端口扫描和路由器黑客,甚至密码,都没有什么,你应该寻找到在这个阶段。

相反,您应该了解的是信任验证健壮性。了解一点心理学,尤其是关于挑战和奖励,也不是一件坏事。我不能在这样的简短回答中真正教给您很多,但是这里有一些技巧可以帮助您开始进行安全编程:

  • 将来自您直接控制之外的任何输入视为可能不是您期望的。这包括所有用户输入,通过网络接收的任何内容,甚至包括代码库其他部分的任何内容。尝试进入这样一种心态:不要考虑输入包含的内容,甚至不考虑攻击者可能为您提供的内容,而只是考虑输入可能是什么以及如何安全地处理您可能得到的任何输入。

  • 由于您提到了PHP和MySQL,因此首先要研究SQL注入跨站点脚本攻击。如果您还熟悉C之类的底层语言,请研究缓冲区溢出攻击。不要仅仅考虑如何防止它们-考虑如何编写代码,这样就不会发生这样的错误,无论是偶然还是恶意。如果您只是学习按需使用它们,那么您的编程语言几乎可以肯定会具有允许您执行此操作的工具。

  • 在多人游戏中,您可能会在玩家的计算机上运行一些客户端代码。养成这样的想法:足够聪明和有决心的用户将始终能够妥协此类代码,并使其按自己的意愿去做。 如果可以避免,请不要信任客户。如果无法避免,请确保仅在需要时信任它。

  • 尽量不要将所有鸡蛋都放在一个篮子里。如果您无法在单独的服务器上运行游戏,网站和数据库,请至少在单独的帐户下运行它们,并确保彼此之间没有更多的访问权限。好的,也许您的游戏和网站都需要访问您的用户数据库,但是他们肯定不需要管理员访问它,对吗?也许他们甚至不需要只读访问权限。至少,即使您一开始并没有执行严格的分隔规则,也要设计游戏,以便以后可以放置它-不要使您的游戏服务器需要管理员对数据库的访问权限。请记住,所有软件都有错误,迟早有人 在您的身上找到一个安全漏洞。

通常,关于安全性的认识是一种心态。这并不是要了解最新的安全流行语,也不是了解最新的攻击是如何工作的,也不是要试图预测黑客在这样做之前会做什么(尽管所有这些事情可能都有用)。

实际的安全编程是要学习如何使用应有的用途的工具,将代码分成足够小的部分以使您能够理解它们各自的功能(并确保它们正确执行,即使其他部分遭到破坏),以及有关编写代码以防止意外的发生。如果您做了所有这些,您将不需要知道黑客会尝试什么,因为您会为任何事情做好准备。


8

就个人而言,我不会担心黑客

道理很简单:只有当你成为一个相当流行的游戏时,你才能获得黑客/骗子的支持。即值得花时间破解/欺骗。等到您首先建立了一个游戏,并获得收入来资助这些事情。

您可能要花费大量时间(我是说很多)来愚弄证明您的代码不会被黑客或欺骗。或者,您可以进行常规的异地备份(无论如何都应这样做)并创建常规的还原点。发生漏洞利用时,将其关闭。


1
尽管我同意制作一款优秀的游戏应优先于制作一款安全的游戏,但我要说,从一开始就具有一定程度的对常见安全问题和通用最佳实践的意识。否则,当您的游戏开始起飞时,您可能会陷入困境。如果您的原始设计从根本上来说是不安全的,则稍后尝试对其进行修补可能就像在打架一样:每次关闭漏洞利用程序,作弊者都会发现另外两个漏洞,而阻止它的唯一方法可能是重新设计并重写相当大的一部分从头开始编写代码库。
Ilmari Karonen 2012年

1
@IlmariKaronen,我在概念上同意,但在实践中不同意。在询问者的上下文中,他们通常需要专注于学习网络。当您学习网络时,您倾向于学习密码学。他们处于起步阶段。安全只有在知道自己在做什么并且创建值得保护的东西时才重要。提出此类问题的人需要到达哪里,甚至可以创建值得首先确保安全的东西
brandon

1
@IlmariKaronen我完全同意:如果您不考虑安全性,那就去索尼吧。索尼幸免于难,仅仅是因为它是如此之大,但其他任何人都可能会陷入困境。
o0'。

2
@Lohoris。在此之后,我将不理会它,但这不是索尼。这是一个说他现在正在学习网络基础知识的人。一旦了解了要保护的东西,便可以学习安全性
brandon'4

是的-这是最好的答案:如果您的游戏大受欢迎并且遇到安全问题,您可以随时雇用额外的开发人员等,并重构其网络方案以使其更加安全。以后再担心。
MarkR 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.