Actualmente estoy desarrollando un juego usando JavaScript/JQuery. Es un tipo simple de rompeladrillos, puntuación, niveles, etc. Estoy planeando implementar una tabla de líderes a la que los usuarios puedan enviar su puntuación final. El único problema que veo con esto es que los usuarios manipulan el puntaje usando herramientas de desarrollador en la mayoría de los navegadores. Entiendo que mantener las cosas del lado del servidor resolverá la mayoría de estos problemas, sin embargo, si hay un gran volumen de usuarios, afectará mucho a mi servidor con las solicitudes. Cookies - Fácil cambio de lado del cliente. Honestamente, no tengo ideas lógicas para promover el juego limpio porque SIEMPRE hay personas que intentan engañar/llegar a ser líderes. Dicho esto, ¿cuál es una forma eficiente y efectiva de realizar un seguimiento del puntaje del usuario sin darles acceso para cambiarlo?Prevenir trampas en Javascript Juego
Respuesta
ofuscan su puntaje creando una ecuación que solo se puede calcular por el lado del servidor.
Editar: RobG tiene razón en que tendrá que ser calculado en el lado del cliente.
I hackeado el juego Angry Birds cuando se lanzó en el cromo:
http://wesbos.com/all-levels-html5-angry-birds/
Sin embargo, desde entonces han ofuscar el código tanto que es imposible averiguar qué función de hash calculado ..
¡Maravillosa idea! Nunca pensé en esto. Definitivamente voy a construir fuera de este concepto. ¡Gracias un montón! –
El código se ejecuta en el lado del cliente, por lo que cualquier codificación que se produzca está en el cliente y puede ser suplantada. Diferentes enfoques lo hacen más o menos difícil. – RobG
@RobG para un juego de rompecabezas, existe la posibilidad de hacer que suplantar el puntaje sea tan difícil como el juego en sí. –
base64 codifica tu página javascript. Esto debería evitar que las personas con un coeficiente intelectual por debajo de 120
No creo que necesite un IQ alto para instalar un complemento escrito por otra persona (con cualquier coeficiente de inteligencia) que envíe la puntuación que desee. – RobG
No se puede garantizar sin trampas, es imposible. El servidor responde a las solicitudes, eso es todo. No tiene idea de qué código se está ejecutando en el cliente, en qué tipo de agente de usuario o entorno se encuentra, ni siquiera si está ejecutando su código o un facsímil.
Puede realizar varios pasos para hacer que el spoofing sea más difícil, pero no puede hacerlo imposible. El costo de tales medidas (usualmente visto como "seguridad") generalmente se equilibra con el valor del activo que se protege.
Nunca ponga nada en el cliente. El cliente está en manos del enemigo . Nunca jamás olvide esto.
hacer que la página presente una reproducción completa del juego en lugar de sólo el marcador final. Dada la semilla aleatoria y un registro cuadro por cuadro de las entradas del usuario, su servidor debería ser capaz de simular y reconstruir el juego y verificar el puntaje.
Obviamente la repetición también se puede fingir, pero equivaldría a tanto trabajo (jugar el juego y obtener un buen puntaje, aunque con la injusta ventaja de asistencia de inteligencia artificial, ralentización y otros ataques al cliente) esa herramienta puntajes asistidos deberían merecer estar en la tabla de clasificación.
Esta es la solución más efectiva, pero no la más fácil. – 7yl4r
Una idea que tuve fue usar un temporizador de juego. Si el usuario cambia el puntaje a una cantidad que obviamente no es posible dada la cantidad de tiempo que ha pasado, se niega a registrar la información. Puede iniciar el temporizador y verificar el temporizador en su secuencia de comandos del lado del servidor.
Ahora, por supuesto, si cambian el puntaje solo por unos pocos puntos, esta comprobación puede fallar, pero, si solo agregan una cantidad menor a la impactante, ¿entonces tal vez no le importe tanto?
También podría hacer que la tabla de clasificación sea menos importante, compartiendo solo puntajes con amigos "de confianza". O simplemente permitiendo que las personas compartan su puntaje en cualquier sitio de redes sociales. Quizás esto elimina la motivación principal para hacer trampa en primer lugar.
Siempre podría comparar el puntaje implícitamente con las estadísticas que reunió, para saber si alguien lo está haciendo bien o no.
- 1. ¿Cómo prevenir las trampas en nuestros juegos (multijugador)?
- 2. Juego de ajedrez en JavaScript
- 3. Prevenir Refrescar 'Saltar' con Javascript
- 4. ¿HTML 5 Gaming utiliza Canvas y Javascript? ¿Cómo evitar las trampas en este caso?
- 5. prevención de trampas para navegador basado juego xmlhttp/js/perl/php
- 6. ¿Cómo hacer un juego seguro en javascript?
- 7. trampas ocultas de VBA
- 8. Prevenir javascript onclick el elemento hijo
- 9. ¿Cómo prevenir las ejecuciones simultáneas de javascript?
- 10. ¿Qué trampas existen para Django?
- 11. Generar trampas SNMP con PHP
- 12. C++ iterador en trampas de lazo?
- 13. MongoDB consejos, trucos y trampas
- 14. trampas svn -> git migration
- 15. Trampas de protección contra copia
- 16. ¿Cómo prevenir el escalamiento de imagen @ 2x dentro de javascript en un iPad retina?
- 17. ¿La mejor forma de juego simple en Javascript?
- 18. javascript lista de palabras en inglés para un juego
- 19. Prevenir Autoscroll en RichTextBox
- 20. Cómo prevenir los ataques de inyección de JavaScript
- 21. Posibles trampas al usar una cola JMS?
- 22. Prevención de trampas para el tablero de puntuación arcade en línea
- 23. Prevenir iframe stealing
- 24. Prevenir el flash en Cocoa WebView
- 25. ¿Cómo prevenir CSRF en una aplicación RESTful?
- 26. ¿Cómo prevenir los trucos basados en el tiempo en un juego de simulación basado en el tiempo?
- 27. Prevenir Cambio de foco de ventana
- 28. Cómo prevenir "304 no modificado" en nginx?
- 29. Marco de Javascript para la interfaz de usuario del juego
- 30. a juego con los caracteres acentuados Javascript expresiones regulares
Debe haber algunas buenas respuestas en muchas de las preguntas relacionadas en esta página. ¿Cómo es tu pregunta diferente? –
posible duplicado de [¿Qué buenas formas hay para evitar hacer trampa en los juegos de varios jugadores de JavaScript?] (Http://stackoverflow.com/questions/5250403/what-good-ways-are-there-to-prevent-cheating-in- javascript-multiplayer-games) – Konerak