Actualmente estoy codificando un pequeño juego de matemáticas para el navegador. El plan actual es tener dos estados reducidos para los datos del juego. Uno para los datos operativos, que no tienen que almacenarse en la base de datos porque solo contiene datos para la lógica del juego y otro para los datos del juego guardado. Los datos del juego guardado se almacenarán en una base de datos después de cada intervalo dentro del juego.
Acabo de enterarme de que los estados se pueden manipular desde el lado del cliente, lo que no sería muy deseable ya que el juego tendrá componentes multijugador.
Entonces me pregunto si es posible proteger a los estados de la manipulación de alguna manera. Daría la bienvenida a sus ideas. Gracias de antemano.
Como regla general, debe asumir que cualquier estado en el cliente puede manipularse sin importar qué tan bien crea que está protegido. Es como darle una caja fuerte a un extraño: una persona lo suficientemente decidida encontrará la manera de abrirla.
Si no puede confiar en el cliente, el servidor se vuelve responsable de verificar todo lo que se envía. La forma en que debe hacer esto depende en gran medida del juego que está creando y de lo que debe verificarse.
Por ejemplo:
De acuerdo, lo que haga también depende de sus necesidades de seguridad. Es posible que no necesite una seguridad perfecta y pueda conformarse con hacer prohibitivamente difícil (aunque no imposible) hacer trampa.