Seguridad
Principios para tratar al cliente como una fuente no confiable.
Eco transporta datos; no sustituye la validación de las reglas del juego.
Cliente no confiable
Cualquier valor recibido debe considerarse potencialmente manipulado.
El servidor debe validar como mínimo:
- identidad del jugador;
- ownership;
- existencia del objeto;
- canal válido;
- permisos;
- costes;
- rangos;
- cooldowns;
- estado actual de la partida;
- límites de parámetros.
Ejemplo
Una solicitud:
Construir torre X en celda Yno significa que el servidor deba ejecutar directamente Construir(X, Y).
Debe convertirse en:
¿Jugador válido?
¿Raza permite X?
¿Tiene recursos?
¿Celda Y es válida?
¿Puede construir ahora?
¿La partida lo permite?Sólo entonces se modifica el estado.
Rate limiting
Las acciones que pueden ser abusadas deben tener límites razonables. Un cliente no debería poder provocar trabajo ilimitado enviando RFC a máxima velocidad.
Datos del cliente
El cliente puede enviar identificadores, posiciones solicitadas o parámetros de selección. No debe ser la fuente final de valores económicos o resultados de combate.
Seguridad de gameplay
Ocultar una opción en UI no es una medida de seguridad. Si una regla importa, debe comprobarse en la autoridad.
