Aporte/Debate - Seguridad servidor/cliente

development

#1

Todos sabemos que uno de los mayores obstáculos a la hora de programar son las limitaciones que tenemos de comunicación entre el cliente y el servidor a causa del abuso por parte de los “Exploiters” o “Hackers”, por eso hago este post, para proponer mis ideas y no solo eso, también para que formemos un debate para perfeccionar esta causa.

Primero que nada debemos tener todo esto en cuenta:

  • Los exploiters solo pueden hacer funciones locales
  • Hay propiedades y ciertos métodos que afectan globalmente aun así sea ejecutado por script local
  • Los exploiters pueden llamar a todos los Remotes que estén a su alcance, pero el servidor si puede llamar al cliente sin ningún problema, significa que dependiendo de qué clase de funciones se trate puede ser muy abusivo

Ya con eso en mente propongo unas cuantas ideas que formulé que podrían ser útiles para acabar con el abuso de los exploiters, aquí las enumero:

  1. La independencia del servidor: Hacer que el servidor sea lo más independiente posible es una buena opción, esto no significa que lo más adecuado sea 0 remotes, si no que solo se usen remotes para llamar a funciones simples por las cuales el usuario no puede abusar o necesita de ciertos datos que el servidor administra
  2. Identificación: Esta es más sistemática que práctica, consta de hacer que el servidor solo ejecute scripts locales registrados en una tabla, para eso existe un método llamado “:GetHash()” que se puede utilizar como código de identificación, el único inconveniente es que ese código varía según el contenido del script, sin embargo la solución sería que el servidor registre esos script locales al dar a play para no tener que actualizar la tabla cada vez que editas un script local
  3. Limitaciones: Otra buena forma es limitar mucho las funciones del servidor poniendo condiciones de datos fundamentales que el servidor registre del usuario

Y eso es todo lo que tenía para decir, ¿Crees que no fue muy útil? ¿Tienes algo para aportar? comenta y intentaré responder y actualizar este tópico cada vez que pueda.


#2

Roblox ya hace esto en su propio codigo, pero esto no limita codigo que es introducido al cliente por otro programa, y no se puede arreglar completamente.


#3

Cierto, pero el punto es que si el script es modificado el código del método “Hash” cambia y el cliente ya deja de ser válido para llamar al servidor.


#5

No se puede hacer. El metodo puede ser alterado y tambien no funcionara en el servidor si el cliente no esta reportando cambios. Roblox ya tiene algo similar tambien.


#6

¿Dices que los exploiters pueden alterar métodos también? Si sabes algo más acerca de las posibilidades de los exploiters dilo así actualizo el post para que sea más útil para todos.


#7

Este post tiene mas detalles sobre la situacion.