Sblocca codici per un'app mobile

7

Questo è per un progetto di gioco Android (via Cordova / PhoneGap). Il mio obiettivo è essere in grado di fornire un "codice promozionale" che permetterà a chiunque di sbloccare il gioco gratuitamente, ma voglio limitare ogni codice a funzionare solo per un giorno e non voglio fare affidamento su un componente lato server per convalidare i codici. La soluzione che ho trovato era che il codice di ogni giorno fosse le prime lettere dell'hash md5 del (codice del giorno precedente + un valore segreto). Eccolo in js:

function checkPromoCode(codeToCheck) {
    var secretString = "ABCDEFGH"; 
    var startDate = new Date(1388534400000);    // Jan 1 2014
    var currentDate = new Date();
    var todaysCode = "";
    while (startDate < currentDate) {
        todaysCode = md5(todaysCode + secretString).substring(0,6);
        startDate.setDate(startDate.getDate() + 1);
    }
    if (codeToCheck == todaysCode) return true;
    return false;
}

Ho ragione nel ritenere che l'unico modo ragionevole per un utente malintenzionato (che conosce l'algoritmo che sto usando e conosca i codici di alcuni giorni precedenti) per determinare il codice di oggi consiste nel calcolare il valore di secretString? Capisco che un determinato attaccante potrebbe capire il valore di secretString con la forza bruta o con l'analisi dell'apk. Niente è irricevibile; l'obiettivo qui è solo quello di renderlo ragionevolmente difficile. Mi manca qualcosa di ovvio? E MD5 è un hash appropriato da usare?

    
posta DevOfZot 16.10.2014 - 21:56
fonte

1 risposta

1

Non commentare la sicurezza, questo è quello che ho ricevuto da una volta:

  • È considerato migliore per avere una singola istruzione var separata da virgola
  • Potresti fare var startDate = new Date('2014/1/1'); e quindi non hai bisogno del tuo commento
  • Puoi scrivere

    if (codeToCheck == todaysCode) return true;
    return false;
    

    come

    return codeToCheck == todaysCode;
    
  • Oltre a questo mi piace nominare le variabili, il flusso del codice e la leggibilità generale
risposta data 17.10.2014 - 04:18
fonte

Leggi altre domande sui tag