¿Se requiere conocimiento de los mecanismos de piratería para un MMO?

10

Digamos que estaba planeando, en el futuro (¡no ahora! Hay mucho que necesito aprender primero) buscando participar en un proyecto grupal que iba a hacer un juego multijugador masivo en línea (mmo), y mi trabajo sería la creación de redes parte. No estoy tan familiarizado con la programación de red (he leído un libro muy básico sobre PHP, MYSQL y me metí un poco con WAMP ).

En el curso de mis estudios de PHP y MYSQL, ¿debería investigar la piratería? Hackear como en el escaneo de puertos, hackeo de enrutadores, etc. En los MMO, la gente siempre está tratando de hacer trampa, bots y demás, pero el peor escenario sería que alguien piratee las bases de datos. Esto es solo mi concepción de esto, realmente no lo sé. Sin embargo, entiendo bastante bien las redes, como las subredes / puertos / IP (local / global) / etc.

En su opinión profesional, (si comprende el tema, ilumíneme) ¿Debería aprender sobre estas cosas para contrarrestar la posibilidad de que esto suceda?

Además, de las cosas que mencioné (escaneo de puertos, pirateo de enrutadores) ¿Hay algo más relacionado con el pirateo que debería analizar? No estoy muy familiarizado con los aspectos maliciosos / de seguridad de las redes.

Y una nota: no soy un niño tratando de aprender a hackear. Solo quiero aprender tanto como sea posible antes de ir a la universidad, y realmente necesito saber si necesito estudiar esto o no.

Gabriel
fuente
10
Escribir sistemas de servidor de back-end que puedan escalar a números lo suficientemente grandes como para ser considerados "masivos" es el problema mucho más grande para usted que hackear si "no está tan familiarizado con la programación de red". ¿Estás seguro de que estás tratando de hacer un MMO y no solo un juego multijugador normal?
1
Veo; La redacción de su pregunta realmente hace que parezca que está tratando de trabajar en este MMO ahora.
77
Por lo tanto, no está familiarizado con las redes, planea hacer un MMO (que es lo más difícil que puede planear) y se pregunta si realmente necesita aprender a defenderse contra los piratas informáticos. Uh Por supuesto que sí, y lo sabes. ¿Cuál es el punto de preguntar eso?
o0 '.
2
relacionado, gamedev.stackexchange.com/a/21598/6937 Respuesta breve, si alguna vez has oído hablar del desarrollo iterativo, puedes ver el aprendizaje de la misma manera. La seguridad tiende a funcionar como un complemento después del hecho. Antes de crear un servidor MMO seguro, solo cree un servidor MMO. Antes de hacerlo, lea la respuesta a la publicación vinculada
marca el
1
Es como un niño de 14 años que quiere convertirse en presidente preguntando cuál es la corbata más apropiada para usar con su traje futuro. Ese niño probablemente no será el presidente, e incluso si lo fuera, tendría problemas más importantes que el empate. Probablemente no creará con éxito un MMORPG con un "proyecto grupal", y si lo hace, tiene problemas mucho mayores que este.
Thomas Bonini

Respuestas:

16

Sí, alguien (de hecho, varias personas) en el equipo que desarrolla cualquier juego multijugador, independientemente de la escala, debe tener un conocimiento sólido de los conceptos de seguridad de redes tanto a nivel de hardware como de software.

Esto es especialmente cierto para los juegos que implicarán mucha persistencia de la agencia, ya que eso constituye una inversión por parte del jugador y, en consecuencia, es algo que es un objetivo lucrativo para los piratas informáticos.

Tomar clases de redes / seguridad de redes / seguridad general (criografía, etc.) en la universidad será útil para brindarle algunos de los conocimientos previos necesarios para ser uno de los desarrolladores antes mencionados.


fuente
11

Saber algo sobre seguridad es una buena idea antes de intentar escribir un juego multijugador, pero cosas como el escaneo de puertos y el pirateo de enrutadores, o incluso la criptografía, no son lo que debería estar buscando en esta etapa.

Por el contrario, las cosas que debe aprender son la confianza , la validación y la solidez . Conocer un poco sobre psicología, especialmente sobre desafíos y recompensas, tampoco es algo malo. Realmente no puedo enseñarte mucho de eso en una respuesta corta como esta, pero aquí hay algunos consejos para que comiences con la programación segura:

  • Trate cualquier entrada desde fuera de su control directo como si no fuera lo que espera. Eso incluye todos los aportes del usuario, todo lo que recibe a través de la red e incluso cualquier cosa de otras partes de su base de código. Trate de tener la mentalidad de no pensar en lo que debería contener la entrada , o incluso en lo que un atacante podría alimentar en su lugar, sino simplemente en lo que podría ser la entrada y cómo manejar de manera segura cualquier posible entrada que pueda obtener.

  • Como menciona PHP y MySQL, comience mirando la inyección de SQL y los ataques de secuencias de comandos entre sitios . Si también está familiarizado con lenguajes de bajo nivel como C, busque ataques de desbordamiento de búfer . No solo piense en cómo prevenirlos: piense en cómo escribiría su código para que errores como ese simplemente no puedan suceder, ya sea por accidente o por malicia. Es casi seguro que su lenguaje de programación tiene las herramientas para permitirle hacer eso, si solo aprende a usarlos como deberían.

  • En un juego multijugador, presumiblemente tendrás algún código de cliente ejecutándose en la computadora del jugador. Acostúmbrese a la idea de que un usuario suficientemente inteligente y determinado siempre podrá comprometer dicho código y hacer que haga lo que quiera. No confíes en el cliente , si puedes evitarlo. Si no puede evitarlo, asegúrese de confiar solo en él tanto como sea necesario.

  • Intenta no poner todos tus huevos en una canasta. Si no puede ejecutar su juego, su sitio web y su base de datos en servidores separados, al menos ejecútelos en cuentas separadas, y asegúrese de que ninguno de ellos tenga más acceso el que necesitan. OK, tal vez tanto tu juego como tu sitio web necesitan acceso a tu base de datos de usuarios, pero seguramente no necesitan acceso de administrador , ¿verdad? Quizás ni siquiera necesitan más que solo acceso de lectura . Al menos, incluso si no aplica una compartimentación tan estricta para empezar, diseñe su juego para que pueda implementarse más tarde; no haga que su servidor de juegos requiera acceso de administrador a la base de datos. Recuerde que todo el software tiene errores, y tarde o temprano alguien tendrá encuentra un agujero de seguridad en el tuyo.

En general, lo que debe darse cuenta de la seguridad es que es una mentalidad . No se trata de conocer las últimas palabras de moda de seguridad, o de cómo funcionan los últimos ataques o de tratar de anticipar lo que los hackers harán antes de que lo hagan (aunque todas esas cosas pueden ser de alguna utilidad).

La programación segura real se trata de aprender a usar las herramientas que tiene de la forma en que estaban destinadas, a dividir su código en partes lo suficientemente pequeñas para que pueda comprender lo que hace cada una (y asegurarse de que lo hagan bien, incluso si otras partes están comprometidas), y sobre escribir su código para esperar lo inesperado. Si haces todo eso, no necesitarás saber qué podrían intentar los hackers, porque estarás preparado para cualquier cosa.

Ilmari Karonen
fuente
8

Personalmente, no me preocuparía por los hackers todavía .

La razón es simple: no conseguirás hackers / tramposos hasta que seas un juego bastante popular; es decir, vale la pena el tiempo para hackear / engañar. Espere hasta que se establezca primero un juego y lleguen ingresos para financiar ese tipo de cosas.

Puedes pasar mucho tiempo (quiero decir, mucho) tratando de engañar a tu código para que no pueda ser pirateado o engañado. O puede hacer copias de seguridad periódicas fuera del sitio (lo que debería hacer de todos modos) y crear puntos de restauración regulares. Cuando ocurre un exploit, ciérralo.

corsiKa
fuente
1
Si bien estoy de acuerdo en que hacer un buen juego debe tener prioridad sobre uno seguro , diría que desde el principio es bueno tener un cierto grado de conciencia sobre los problemas de seguridad comunes y las mejores prácticas generales. De lo contrario, puede encontrarse en una situación insostenible si y cuando su juego despega. Si su diseño original es fundamentalmente inseguro, tratar de repararlo más tarde puede ser como luchar contra una hidra: cada vez que cierra un exploit, los tramposos encuentran dos más, y la única forma de detenerlo puede ser rediseñar y reescribir una fracción sustancial de su base de código desde cero.
Ilmari Karonen
1
@IlmariKaronen, estoy de acuerdo en concepto, pero no en la práctica. Dado el contexto del autor de la pregunta, deben centrarse en el aprendizaje de redes en general. Cuando aprende redes, tiende a aprender sobre criptografía. Están en las etapas iniciales. La seguridad solo es importante una vez que sabes lo que estás haciendo y creas algo que vale la pena asegurar. Las personas que solicitan este tipo de pregunta necesidad de llegar a donde incluso pueden crear algo digno de asegurar primero
Brandon
1
@IlmariKaronen Estoy totalmente de acuerdo: si ignoras la seguridad, irás a Sony. Sony ha sobrevivido a su desastre solo porque era tan grande, pero cualquiera podría haberse vuelto FUBAR.
o0 '.
2
@Lohoris. Lo dejaré solo después de esto, pero esto no es Sony. Este es un tipo que dijo que ahora está aprendiendo los conceptos básicos de las redes. Aprenda seguridad una vez que comprenda qué es lo que está asegurando ...
brandon
Sí, esta es la mejor respuesta: si su juego se vuelve enormemente popular y sufre problemas de seguridad, siempre puede contratar desarrolladores adicionales, etc., y refactorizar su esquema de red para hacerlo más seguro. Preocúpese más tarde.
MarkR