¿Crear un sistema de recompensa de código QR seguro?

1

Te di el siguiente escenario:

Un cliente viene a una cafetería y toma 1 café. Luego sacó una aplicación de este Coffeeshop y abrió el escáner QR integrado. El trabajador le muestra un código QR y luego el contador sube 1 en la aplicación del cliente. Si el cliente obtiene 10, obtiene 1 café gratis.

El problema aquí es que el cliente podría tomar una fotografía de ese código QR y podría comenzar un ataque de repetición para obtener cafés gratis todo el tiempo.

¿Cómo podría ser un sistema como este seguro? ¿Qué debe contener el código QR? Y así. Por favor, ayúdame.

    
pregunta lreiner 17.11.2017 - 19:01
fuente

2 respuestas

1

No puedes asegurar un código de barras estático contra las copias. No es posible.

Lo que debe proteger contra este tipo de ataque es que el cliente ingrese / escanee algo dinámico. Tiene que cambiarse cada vez que se usa; tiene que cambiar de una manera impredecible, para que los clientes deshonestos no puedan recuperar un valor y engañarlo; y el sistema de back-end debe negarse a aceptar múltiples escaneos del mismo código.

Una forma de hacerlo es mostrar el código QR en una tableta montada en el mostrador. Cada vez que un cliente lo escanea y su aplicación envía un mensaje al servidor, valida el código actual y luego cambia el código QR para mostrar un nuevo número aleatorio al siguiente cliente.

Esto necesita más seguridad, por supuesto. De alguna manera, debe limitar los registros de sus clientes para que no pueda escanear 10 códigos de barras seguidos en un minuto. Puede resolver esto mostrando solo un código QR después de que la caja registradora reciba el pago. O podría limitar el registro del cliente para ignorar múltiples exploraciones dentro de una ventana de 30 minutos.

Puede hacer que la caja registradora imprima códigos de barras únicos en los recibos, pero los ladrones recogerán los recibos descartados de la basura y los escanearán. Se necesita una lógica de back-end sofisticada para detectar este tipo de fraude.

    
respondido por el John Deters 17.11.2017 - 20:52
fuente
0

Como alternativa más de baja tecnología, podría cambiar el código diariamente y solo permitir el canje una vez al día.

El código podría contener una carga útil firmada que depende tanto de la ubicación del letrero como de la fecha.

    
respondido por el KJ4IPS 21.11.2017 - 21:25
fuente

Lea otras preguntas en las etiquetas