Verifica del check in del cliente

2

Ho creato un'applicazione per la fedeltà e la ricompensa dei clienti che funziona in modo molto semplice. Forniamo caffè ecc. Con un codice QR stampato che i clienti analizzano su ogni visita, utilizzando l'app. Al termine delle visite X, il cliente ha diritto a un premio, ad es. un caffè gratis. Al fine di evitare check in illegittimi, come scattare una foto del codice QR stampato e scansionarlo a casa, forniamo un iBeacon insieme all'etichetta. Pertanto, ogni volta che un utente analizza con l'app il codice QR, l'app tenta di comunicare tramite BLE con il relativo iBeacon. Se viene trovato, il check-in è considerato legittimo.

Ciò ha tuttavia dimostrato di avere molte carenze, le più importanti delle quali sono:

  • Le batterie iBeacon si esauriscono abbastanza spesso (dopo alcuni mesi) e nonostante il fatto che i proprietari ricevano SMS per sostituire il batterie, per lo più non disturbano.
  • Lo stesso iBeacon è relativamente costoso (circa $ 15 ciascuno) visto che offriamo questo servizio gratuitamente.

Dato che l'incentivo a "hackerare" questa app non è così grande (non vincerai un'auto o una casa sulla spiaggia), ti suggerirei di fare affidamento solo sulla posizione dell'utente, ad esempio per convalidare quella il cliente è davvero al negozio. Tuttavia, vogliamo che questo funzioni anche sulle merci consegnate. Attualmente forniamo anche etichette "mobili" che un fattorino ha con sé e il cliente può eseguire la scansione a casa o al lavoro.

Sto cercando di pensare a un modo più semplice o più economico per convalidare i check-in dei clienti, ma non sono riusciti a farlo.

Qualcuno può suggerire un modo alternativo "abbastanza buono per la maggior parte dei casi" per farlo?

Modifica

Il mio problema principale è che qualcuno può scattare una foto di un codice QR e scansionarlo a casa. Pertanto, mi chiedevo quanto sarebbe difficile controllare l'immagine che la mia app "vede" durante la scansione sul lato server. Quindi, se ho caricato un'immagine presa dalla fotocamera, ogni volta che qualcuno esegue la scansione di un'etichetta e ha un qualche modo "automagico" per determinare se si tratta di una scansione legit o ad es. lo schermo di un altro telefono o una copia stampata della mia etichetta?

Ecco come appare un'etichetta

Posso stampare qualcosa sulla carta o l'etichetta di plastica che posso identificare durante la scansione che sarebbe difficile da imitare? Per esempio. l'etichetta diventa verde se visualizzata su un angolo specifico?

    
posta kagelos 22.10.2018 - 16:49
fonte

1 risposta

4

Modifica Ecco una risposta più formale:

La progettazione di un sistema di sicurezza spesso trova sempre il giusto equilibrio tra costi, usabilità e sicurezza.

Nell'estremo opposto dello spettro, hai la soluzione iniziale: QRcode stampato che deve essere scansionato. Ha il costo più basso (1 pezzo di carta per posizione di installazione), l'usabilità più elevata (una semplice scansione con un'app) e la sicurezza più bassa (può essere giocato da chiunque abbia poca o nessuna attrezzatura e conoscenza).

Hai scambiato alcuni costi e usabilità per un po 'più di sicurezza aggiungendo un iBeacon. Questa è stata una buona mossa, ma risulta che non riesci a non essere in grado di permettermi né il costo aggiuntivo (il beacon) né l'usabilità persa (la necessità di cambiare la batteria).

Quindi, quello che dovresti cercare è una soluzione che sia meno costosa e più utilizzabile senza troppo compromettere la sicurezza.

Quindi, vorrei suggerire qualcosa che sia:

  • Ancora per lo più cartaceo (almeno per quanto riguarda i punti di distribuzione)
  • Consentono di regolare il costo / usabilità / sicurezza in base alla situazione specifica.

Quindi, la mia idea è di estendere il tuo codice QR per includere due elementi aggiuntivi:

  • Un tipo di "selettore di regole" che consente di definire quale profilo di sicurezza è richiesto per utilizzare quel codice
  • Una firma per impedire la contraffazione.

Creo quindi diverse regole diverse:

  • Il tipo più semplice di regola è di richiedere che la tua applicazione venga posizionata geograficamente vicino al punto di distribuzione prima di convalidare la visita. Questa dovrebbe essere la tua normale opzione di implementazione.
  • Un limite di tempo per la validità del codice in modo da poter generare (e stampare o semplicemente visualizzare in un'app) il codice che può essere portato in giro.
  • Una limitazione IP che puoi collegare alla posizione di distribuzione (in modo che i visitatori possano solo convalidare la loro visita dal wifi locale, ad esempio).

Tale schema ti consentirà di adattare la convalida effettuata alla situazione che affronti e di adattare di conseguenza il rapporto usabilità / sicurezza.

Ovviamente, questa non è l'unica opzione possibile: puoi (come suggerito da @TripeHound) generare codici in rapida evoluzione e visualizzarli su un terminale locale (ad esempio su uno schermo TV, magari come sovrapposizione rispetto al programma normale) ma questo è un calcolo dei costi completamente diverso.

Risposta iniziale: Ovviamente, il tuo problema è il costo: qualsiasi soluzione al tuo problema richiederà una qualche forma di dispositivo attivo nel luogo che è difficile da falsificare ma non troppo costoso da implementare.

Suggerirei quanto segue:

  • Modifica la tua applicazione per utilizzare la posizione GPS del dispositivo.
  • Per i fattorini, genera codici speciali (firmati) che disabilitano i controlli GPS per la data specificata che possono essere stampati prima di uscire.

È tutt'altro che perfetto e ci sono diversi modi per imbrogliare (ad esempio, scattare una foto del codice di un fattorino)

    
risposta data 22.10.2018 - 17:45
fonte

Leggi altre domande sui tag