Assicurare sconti promozionali

1

Ho un servizio che offre un bene fisico in cambio di denaro o tramite il codice fornito da noi. È possibile accedere al servizio tramite un'applicazione mobile.

I codici hanno restrizioni d'uso, ad esempio per essere usati solo una volta per utente. Ciò si ottiene inviando un identificativo univoco con la richiesta per verificare se l'utente è autorizzato a utilizzare il codice oppure no.
Questa soluzione ovviamente funziona solo nel mondo perfetto, dove nessuno decodifica la tua API.

Ciò che voglio impedire è che un utente malintenzionato inverta la progettazione della nostra API rivolta pubblicamente e ordini un'enorme quantità di beni che danneggiano gravemente il business.

Il sistema attuale ha impedito questo avendo diversi controlli in atto:

  • ID univoco per utente, generato sul dispositivo (bypass: generato un UUID casuale su ogni richiesta malevola)
  • rate limiting, a un singolo IP è permesso inviare solo X richieste per Y minuti (bypass: dal momento che l'IP acquisito attraverso le intestazioni HTTP, questo dovrebbe essere abbastanza facile da spoofare, e ovviamente entrerà solo dopo che c'è già alcuni considerevoli danni fatti)

Come posso assicurarmi che questo non sia abusato?

Le uniche due soluzioni che ho potuto trovare sono:

  • non fare mai sconti completi, fai solo sconti parziali (come il 50% di sconto), che richiederebbe che l'attaccante paghi ancora per ogni bene, riducendo l'incentivo.
  • avere account, che richiederebbero più passaggi, riducendo anche l'incentivo.

E ad essere onesti, non voglio fare nessuno di questi.

Modifica 1: L'identificativo univoco viene generato sul dispositivo, su iOS IDFA viene utilizzato, su Android il ANDROID_ID . Vengono inviati come testo normale su HTTPS al server, per identificare l'utente. Se un utente malintenzionato desidera riprodurre la richiesta per ordinare le merci, deve solo cambiare questo identificativo e il server lo accetterà volentieri come un nuovo ordine.

    
posta Leandros 03.05.2016 - 15:16
fonte

0 risposte

Leggi altre domande sui tag