Introducción
Actualmente estoy intentando crear una capa de red para Unity desde cero. Actualmente estoy probando la comunicación a través de UDP utilizando Node.js para el servidor y el cliente. Sin embargo, supongo que el lenguaje de la implementación no será importante para lo que solicito.
En realidad, solo leo sobre cosas relacionadas con la seguridad en el lado del servidor. Pero debido a que necesito que otras personas me ayuden a probar lo que estoy creando, realmente necesito asegurarme de que no sufrirán ningún daño.
Enfoque actual
El enfoque actual que utiliza Node.js para el servidor y el cliente es bastante básico. Simplemente envío un mensaje de un cliente a mi servidor mientras el cliente y el servidor no están en la misma red local. Ambos están detrás de un enrutador y, por lo tanto, también detrás de un NAT.
El servidor luego envía una respuesta a la IP y al puerto recibido dentro del paquete UDP que se envió desde el cliente.
Problema
Tengo curiosidad acerca de la seguridad en el lado del cliente con respecto a los datos maliciosos enviados por alguien que está falsificando al cliente y / o NAT. Además, no estoy seguro de si el hecho de que mi aplicación esté abriendo puertos en las máquinas cliente y los enrutadores se pueda usar para algo malicioso.
Suposición
Hasta ahora he descubierto que los datos maliciosos podrían ser un problema en el nivel de la aplicación. También me di cuenta de que no es un problema de seguridad cuando mi aplicación abre puertos (localmente en la máquina del cliente y luego cuando se envía dentro del enrutador del cliente) o al menos no puedo hacer nada contra ella.
En resumen, esto significaría que solo necesito proteger al cliente en capas OSI mayores que 4 (dentro de la aplicación). Cualquier cosa menor o igual a la capa 4 de OSI no necesita ser más segura por mí mismo.
Pregunta
Entonces, ¿mi suposición es correcta? Si es así, ¿qué puedo hacer contra los datos maliciosos?