Creare un sistema di ricompensa con codice QR sicuro?

1

Ill ti ha dato il seguente scenario:

Un cliente arriva in una caffetteria e beve 1 caffè. Quindi ha messo fuori una App da questo Coffeeshop e apre il QR Scanner integrato. Il lavoratore gli mostra un codice QR e quindi il contatore passa 1 sull'app del cliente. Se il cliente ne ha 10, riceve 1 caffè gratuitamente.

Il problema qui è che il cliente potrebbe scattare una foto di quel codice QR e potrebbe avviare un attacco di riproduzione per ottenere sempre caffè gratis.

Come potrebbe essere sicuro un sistema come questo? Cosa dovrebbe contenere il codice QR? E così via. Per favore aiutami.

    
posta 17.11.2017 - 19:01
fonte

2 risposte

1

Non è possibile proteggere un codice a barre statico contro la copia. Non è possibile.

Ciò di cui hai bisogno per proteggersi da questo tipo di attacco è che il cliente inserisca / scanditi qualcosa di dinamico. Deve essere cambiato ogni volta che viene utilizzato; deve cambiare in modo imprevedibile, in modo che i clienti disonesti non possano inventare un valore e ingannarlo; e il sistema di back-end deve rifiutarsi di accettare più scansioni dello stesso codice.

Un modo per farlo è visualizzare il codice QR su un tablet montato sul bancone. Ogni volta che un cliente lo scansiona e la sua app invia un messaggio al server, convalida il codice corrente e quindi modifica il codice QR per mostrare un nuovo numero casuale al cliente successivo.

Questo richiede più sicurezza, ovviamente. Devi in qualche modo limitare i record dei tuoi clienti in modo che non possa solo scansionare 10 codici a barre di fila in un minuto. È possibile risolvere questo problema visualizzando solo un codice QR dopo che il registratore di cassa ha ricevuto il pagamento. Oppure puoi limitare il record del cliente per ignorare più scansioni in una finestra di 30 minuti.

Potresti fare in modo che il registratore di cassa stampi codici a barre unici sulle ricevute, ma i ladri raccoglieranno le ricevute scartate dal cestino e le scannerizzeranno. È necessaria una logica back-end sofisticata per rilevare questo tipo di frode.

    
risposta data 17.11.2017 - 20:52
fonte
0

Essendo un'alternativa più low-tech, puoi cambiare il codice ogni giorno e consentire solo il rimborso una volta al giorno.

Il codice potrebbe contenere un payload firmato che dipende sia dalla posizione del segno, sia dalla data.

    
risposta data 21.11.2017 - 21:25
fonte

Leggi altre domande sui tag