securty javascript: una llamada AJAX para grabar resolución de la pantalla del usuario, es posible prevenir números falsos?

StackOverflow https://stackoverflow.com/questions/908283

Pregunta

Esta es una pregunta de seguridad javascript: supongamos que una página entera de la resolución de la pantalla del ordenador, tales como 1024 x 768, y desea utilizar una llamada AJAX para registrar estos datos en la base de datos

.

¿Hay una manera de evitar que en realidad los datos falsa de ser introducidos en la base de datos? Creo que cualquiera que sea el HTML o Javascript hace, el usuario puede realizar ingeniería inversa del código para que algunos números falsos se ingresan en la base de datos, o hay una manera de evitar que suceda totalmente? (100% seguro).

Actualizar o en una situación similar ... Si escribo un simple juego de JavaScript ... ¿hay alguna manera para el usuario para enviar de vuelta el resultado por AJAX y mentir sobre su puntuación?

¿Fue útil?

Solución

Si usted comienza con el supuesto de que el usuario que se está comunicando es malicioso, entonces no; no hay nada que puede hacer para controlar los datos que se pasan. Ciertamente no con certeza del 100% -. En el peor de los casos, se pueden utilizar herramientas de red para reescribir o reemplazar cualquier contenido "correcta", con lo que quieran

Si lo que desea es evitar que la malicia casual, usted podría ocultar o cifrar su código y / o datos. Esto no va a disuadir a un atacante determinado.

Si realmente confía en el usuario real, pero sospecha que otros podrían tratar de hacerse pasar por ellos, se pueden utilizar otras técnicas como un canario dinámica: enviar al usuario un número aleatorio, y si regresan el mismo número para usted, usted sabe que realmente vino de ellas. (O que está siendo víctima de un ataque man-in-the-middle, pero bueno;. Eso es lo que es para SSL)

Otros consejos

No es posible dejar que los usuarios envíen los números que les gusta volver de JavaScript.

Creo que lo mejor que podría hacer es hacer algún tipo de control sobre el lado del servidor para asegurarse de que los números que se envía de vuelta se ven como una solución realista.

No estoy seguro de por qué alguien podría pasar el tiempo para suplantar esos números en el primer lugar sin embargo.

Sí, estás en lo correcto. Puesto que usted está utilizando el código del lado del cliente, lo que tiene que decir la computadora del usuario (y por lo tanto el usuario) de una manera u otra, sea cual sea el cifrado o la ofuscación que está utilizando. No hay manera de evitarlo.

Para la resolución, que sería básicamente imposible determinar si es válida la resolución. Mi resolución se envía normalmente al servidor como 5120 x 1600, lo que parece bastante poco realista, pero es porque las 2 pantallas son enviados a menudo como 1. De lo contrario, hay una tal variedad de posibilidades en resoluciones de pantalla y configuraciones de pantalla, que' d probablemente eliminar una gran cantidad de los válidos, aunque podrían ser pocos.

Para la puntuación del juego, que podría hacer comprobaciones adicionales que hacen que sea más complicado para comprobar. Cosas como el envío de múltiples avisos de la puntuación a través del juego y que requieren un número X para asegurar que la puntuación recibida es válida. (Es decir, debe recibir uno entre 200-300, 400-500, 700-800 y luego el resultado final de 1000.) Con el marcador final, que también podría tener algún tipo de valor cifrado que sólo puede ser usado una vez o que contenga algunos datos con un CRC en él. Básicamente, al final, requiere recibir otros datos que sólo la puntuación, especialmente para las puntuaciones más altas.

Para intentar una respuesta mediante la elaboración de las observaciones formuladas por Dok, y usted mismo, hay una clara distinción entre la manipulación de una aplicación para 'engañar' fuera de algo, ya sea un negocio en línea para conseguir algo más barato o una MMPORG a obtener más experiencia, que se manipula de tal manera que hace que la interfaz de forma incorrecta y disminuye la experiencia general del usuario para ese particular (hacker?) de usuario.

Su tiempo sería mejor gastado centrarse en otros aspectos de su sitio. No recomiendo los usuarios de mi sitio manipular el código HTML para que se vea divertido en sus máquinas, pero no voy a ir a todos y ofuscar mi salida del servidor para evitar que se haga daño a sí mismos. En su caso, la comprobación de rango contra valores seguros pre-definidos, haciendo uso de la base de datos, para asegurar el usuario está viendo con una resolución de 'permitido' pone una carga innecesaria en su solicitud, y toma tiempo para hacerlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top