¿Cómo garantizar que la publicación de datos en los servicios esté a salvo de la manipulación del usuario en los juegos de WebGL?

2

Actualmente estamos creando juegos WebGL para un portal en línea que luego recompensa a los usuarios los puntos que obtienen de In Game Score. La puntuación se envía al servidor web en forma de servicio POST. Recientemente, hemos tenido casos en los que el usuario manipuló la puntuación de alguna manera. ¿Alguna idea sobre cómo asegurar algo como esto? ¿Cuáles son las prácticas industriales estándar para algo como esto? ¿Cómo podemos validar las puntuaciones en el servidor? Cualquier ayuda sería apreciada grandemente.

    
pregunta Faraz Ahmed 13.10.2015 - 13:13
fuente

2 respuestas

3
  

¿Cuáles son las prácticas industriales estándar para algo como esto? Cómo   ¿Podemos validar las puntuaciones en el servidor?

Depende de qué tan inteligentes sean tus usuarios. Una forma trivial para que manipulen los datos es usar un proxy (interceptor) para interceptar el tráfico saliente y alterar el valor de la Puntuación (TLS no puede evitarlo).

Una de las prácticas de la industria para evitar la manipulación y verificar la autenticidad de las solicitudes es utilizar JWT . JWT se usa ampliamente para la administración de autenticaciones de las API REST, sin embargo, también podría ayudar a resolver su problema. JWT firma todas las solicitudes y cualquier modificación de los datos en tránsito lo invalidará en el servidor.

Recuerde, como mencioné anteriormente, depende de qué tan técnicos sean sus usuarios. El uso de JWT solo detiene la manipulación de las solicitudes cuando salen de su aplicación. Con una rara posibilidad, un usuario todavía puede acceder directamente a la memoria y modificar algo (por ejemplo, cambiar la funcionalidad de un juego, sobrescribir un atributo, etc.).

    
respondido por el Dr. mattle 13.10.2015 - 23:12
fuente
2

Práctica recomendada: SIEMPRE TRATAR TODA LA INFORMACIÓN ENVIADA POR EL USUARIO DE FORMA FALSA HASTA EL DERECHO COMPROBADO

Cómo hacer eso:

  • cifre la puntuación y algún otro campo identificable a través de un algoritmo unidireccional y envíelos.
  • luego en el otro extremo, verifique la sal.
  • Para hacer que la sal sea aún más ... oscura, concaténela de manera reproducible. Elimine el algoritmo y el costo (si siempre los conoce) y concatene. Luego divida en el índice de caracteres, vuelva a pagar el costo y el algoritmo, y luego verifique. Si esto se genera en el juego, será una tarea monumental entrar y encontrar la información.

Por supuesto, esto podría tener algunos problemas (qué sucede si pueden crear sus propios puntajes de bcrypt y descubrir cómo concatenarlos correctamente), en cuyo caso la solución más sencilla es cambiar el costo y cómo se concatena ( de hecho esto puede automatizarse para que ocurra todos los días o algo así). Sencillo. Fácil. Hecho.

    
respondido por el Robert Mennell 13.10.2015 - 18:03
fuente

Lea otras preguntas en las etiquetas