marcadores google example ejemplos content aƱadir javascript ruby flash security api

javascript - google - Asegurar una API del lado del cliente



google maps marker title (5)

Como regla general, asuma que cualquier cosa en el lado del cliente puede ser falsificada.

Estoy creando una API del lado del servidor y una biblioteca del lado del cliente para un juego basado en JavaScript donde se deben asegurar dos características muy importantes.

  1. Un usuario debe ser debitado por cada jugada
  2. Debemos asegurarnos de que el puntaje que se presente sea el puntaje obtenido por el jugador.

Resolver el primer problema parece simple; al comienzo de cada jugada, accedemos a la API, cargamos la cuenta del usuario y devolvemos una ID de juego única. Cuando enviamos el puntaje del usuario para esa jugada, pasamos la identificación emitida al principio.

El segundo me tiene un poco perplejo. Inicialmente, consideré un algoritmo de hashing del lado del cliente basado en la ID y la puntuación, pero rápidamente me di cuenta de que el Javascript que produce el hash podría ser fácilmente modificado por ingeniería inversa, incluso si estuviera ofuscado. En este punto, consideré un pequeño componente flash que genera el hash, pero he oído que incluso el flash compilado se puede descompilar.

Para un contexto agregado, planeo construir la API del servidor en Ruby.

Me encantaría escuchar cualquier sugerencia que los programadores inteligentes de Stack Overflow puedan ofrecer. ¡Gracias por tu tiempo!

Editar: La respuesta de Homer6 a continuación es una muy buena solución para juegos más sofisticados, pero desafortunadamente la simplicidad de este juego no merece un método como ese. Es un juego basado en el tiempo muy corto, por lo que el puntaje es el tiempo que le lleva completar un nivel.


Descargar la biblioteca as3corelib
Haga que el servidor genere una clave
La clave se basará en la sesión y también caducará X cantidad de minutos
Todos los datos hacia y desde el servidor serán encriptados con esta clave

El hecho de que los datos estén encriptados con una clave que lo deprecia hace que sea mucho más seguro.


Haz la parte del juego en el lado del servidor.

Podrías hacer que la API solo reciba acciones en el juego. Entonces la puntuación se realiza en el servidor. Si bien esto será más intenso, es más difícil de falsificar.

Por supuesto, las personas aún pueden escribir bots si son inteligentes. Esto también agrega la latencia de las interacciones del servidor con la jugabilidad. Si hay una forma de que las solicitudes no sean bloqueadas, puede funcionar.

HTH



expanda la puntuación de usuario a una estructura de datos como un tipo de registro:

<action type="1" score="+3" totalscore="3" gamestate="depends on the game"/> <action type="4" score="+1" totalscore="4" gamestate="depends on the game"/>

y crea un algoritmo de verificación del lado del servidor. sin embargo, llevar toda la lógica del juego al servidor es mucho más seguro