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.
fuente
Respuestas:
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
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.
fuente
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.
fuente