¿Cómo lidiar con el mal comportamiento de los clientes en un servidor autorizado?

2

Mi compañero de trabajo y yo estamos desarrollando un servidor autorizado para un MMO. No podemos ponernos de acuerdo sobre cómo manejar a los clientes que se "portan mal". Mal comportamiento, en este caso, significa que los clientes que envían solicitudes "extrañas" pueden indicar un cliente comprometido / alterado, o incluso un usuario infame que inyecta datos directamente en el flujo de comunicación.

Uno de nosotros cree que la solicitud ofensiva debe abortarse, los datos del cliente deben guardarse y la conexión del cliente debe cerrarse a la fuerza ("eliminarse"). El otro cree que la solicitud debe abortarse y se debe devolver una respuesta "fallida" al cliente.

Estamos en un punto muerto porque no podemos decidir cuál es el mejor enfoque. Ambos generamos argumentos, pero nada ha sido suficiente para influir en ninguno de los dos.

Para referencia, aquí hay algunas cosas que hemos considerado:

  • Desconectarse resulta en una molestia para los usuarios legítimos si cometemos un error al codificar la "detección de mal comportamiento"
  • Matar al cliente elimina la necesidad de un código de respuesta de "limpieza".
  • Si no eliminamos al cliente, podemos cometer un error y continuar procesando la solicitud incorrecta.
  • Matar al cliente evita que un cliente comprometido envíe otras solicitudes potencialmente malas, al menos hasta que vuelvan a iniciar sesión.
  • Una desconexión puede no hacer mucho para disuadir a los tramposos, mientras que una respuesta de negación puede provocar un sentimiento de "hermano mayor mirando".

¿Algún comentario sobre nuestros argumentos? ¿Hay otras razones para elegir una sobre la otra? ¿Existe algún estándar de la industria, o incluso un consenso sobre las mejores prácticas?

    
pregunta Xcelled 04.08.2014 - 19:05
fuente

1 respuesta

2
  • Desconectarse resulta en una molestia para los usuarios legítimos si cometemos un error al codificar la "detección de mal comportamiento"

Con la revisión adecuada del código, se pueden evitar errores como estos.

  • Matar al cliente elimina la necesidad de un código de respuesta de "limpieza".

Aunque es importante "matar" a un cliente malintencionado para evitar más problemas, personalmente, sugeriría recopilar tanta información sobre la fuente maliciosa antes de "matar" la conexión del cliente.

  • Si no eliminamos al cliente, podemos cometer un error y continuar procesando la solicitud incorrecta.

Sin evitar la actividad maliciosa, corre el riesgo de una mayor explotación.

  • Matar al cliente evita que un cliente comprometido envíe otras solicitudes potencialmente malas, al menos hasta que vuelvan a iniciar sesión.

Esto dependería en última instancia de la arquitectura y el diseño del juego, pero sin conocer muchos detalles sobre el MMO propuesto, esta acción definitivamente sería una mitigación inmediata, pero es importante registrar la fuente del ataque ( fecha / hora / src IP / dst IP / ports / protocol / attack type) para respuesta a incidentes. Si bien los ataques cibernéticos son inevitables, la recopilación de los datos mencionados puede ayudarlo a detectar, contener y erradicar cualquier amenaza adicional.

    
respondido por el injector 04.08.2014 - 22:45
fuente

Lea otras preguntas en las etiquetas