¿Cómo pasar datos de forma segura para la actualización del servidor desde el cliente?

-1

Supongamos que tengo 3 videos en mi página. El cliente puede ver cada uno de los videos, una vez completado, ganaría n puntos dependiendo de qué video haya visto. Quiero POSTAR que n para el cliente específico del backend para actualizar sus puntos totales.

Estoy investigando sobre cómo lograr esto de manera segura ya que no tengo mucho conocimiento de seguridad. Lo que estoy tratando de evitar es que alguien ajuste manualmente el valor de n y que el backend lo actualice incorrectamente o una variación del ataque Man-In-Middle.

    
pregunta dchhetri 15.06.2016 - 01:11
fuente

1 respuesta

1

No hay manera de hacer esto de una manera completamente segura, ya que no puede confiar en el cliente . El servidor nunca puede saber si el usuario realmente vio el video o no. Yo recomendaría no tratar de ofuscar su código o complicarlo. Al final, un usuario determinado siempre podrá hacer trampa de todos modos, y usted está haciendo un desastre de su código sin ningún beneficio. Después de todo, es posible que el usuario ni siquiera esté frente a la computadora mientras se reproduce el video.

Dicho esto, puedes hacer que sea más difícil hacer trampa. Aquí hay algunas sugerencias:

  • No enviar n . En su lugar envía un código único al video visto. Si bien el usuario podría simplemente cambiar ese código, al menos no podría establecerlo en un número ridículamente grande y ganar miles de millones de puntos.
  • En el servidor, guarde el tiempo que el usuario solicita la página con un video. Cuando el servidor recibe el mensaje de "video visto", verifique que el tiempo transcurrido no sea más corto que la duración del video. Si es así, has encontrado un tramposo.
  • Si transmite el video, verifique que todo el video se haya descargado antes de otorgar puntos. Una vez más, esta es una verificación que debe hacer en el servidor.
  • Finalmente, si esto es para algún tipo de propósito educativo, haga una prueba simple al final donde el usuario deba demostrar una comprensión básica de los conceptos que se discutieron en el video.
respondido por el Anders 15.06.2016 - 12:51
fuente

Lea otras preguntas en las etiquetas