2010-05-10 12 views
11

Con todo el alboroto reciente sobre JavaScript y HTML5 en reemplazo de Flash, quería saber: ¿cómo sería posible proteger el código js del lado del cliente? Por supuesto, es posible ofuscarlo, pero eso solo lo haría un poco más difícil. Además, para los juegos que envían puntajes altos al servidor, ¿no sería increíblemente fácil modificar esos puntajes antes de enviarlos al servidor? Sé que incluso los archivos Flash se pueden descompilar, pero se pueden ofuscar y la descompilación flash no es tan fácil como modificar los datos en JS; podría hacerse fácilmente usando un complemento como Firebug. Me gustaría conocer las opiniones de todos sobre esto.Código de seguridad/protección en JavaScript

Respuesta

8

JavaScript, al ser analizado en el cliente, nunca es 100% seguro. Habrá siempre para descubrir qué hace. Hace unos días, incluso he visto una herramienta que descomprime paquetes de JavaScript, por lo que lo único que puedes hacer es usar nombres de variables "feos" (o hacer que un empaquetador de JavaScript transforme tus nombres de variables "buenos" en cortos/feos/sin sentido)

Para proteger los resultados del juego, debe mover parte de la lógica del juego al servidor para que el cliente no pueda enviar resultados arbitrarios.

Resumiendo: No ponga secretos en el código javascript y no confíe en nada que provenga del cliente, no importa si es de un formulario o si se genera/envía a través de javascript.

+0

Gracias. Incluso si muevo parte de la lógica del juego, el algoritmo para generar datos para enviar al servidor sigue siendo muy abierto. Además, ¿no sería esto un factor importante en la adopción de HTML5 especialmente con respecto a los juegos? ¿Por qué/Cómo las personas predicen que el flash está en camino de salida? – BlueSilver

+1

Flash es casi tan inseguro como javascript. Hay buenos descompiladores ActionScript por ahí e incluso si eso no fuera posible, aún podrías oler la solicitud enviada al servidor. Además de eso, muchos juegos flash son solo por diversión, no por recompensas, etc. por lo que no importa en absoluto si la gente hace trampa allí o no. – ThiefMaster

+0

Perdón por preguntar esto repetidamente, pero ¿no sería esto un factor importante para la adopción de HTML5? Además, olfatear la solicitud no es tan fácil como ver la fuente. Además, hay portales de juegos flash en los que obtener puntajes altos podría llevarte dinero, por lo que infringir sería importante. – BlueSilver

0

Usted dice que para el juego que envía puntajes altos al servidor sería demasiado fácil modificar el javascript y forzar la solicitud?

Excepto en el caso, cuando utiliza alguna criptografía en el cliente, es la forma más fácil de forzar dicha solicitud, ni siquiera analiza la secuencia de comandos, sino que envía una solicitud falsa. Todo lo que envía entre el servidor y el navegador puede verse fácilmente en la computadora, analizarse y modificarse.

Cuestiones relacionadas