Con tutto il recente hype su JavaScript e HTML5 in sostituzione di Flash, volevo sapere: come sarebbe possibile proteggere il codice js lato client? Certo, è possibile offuscarlo, ma ciò renderebbe solo un po 'più difficile. Inoltre, per i giochi che inviano punteggi elevati al server, non sarebbe incredibilmente facile modificare quei punteggi prima che vengano inviati al server? So che anche i file Flash possono essere decompilati, ma possono essere offuscati e la decompilazione flash non è facile come modificare i dati in JS - potrebbe essere fatto facilmente usando un plugin come Firebug. Mi piacerebbe conoscere le opinioni di tutti su questo.Protezione/Protezione del codice in JavaScript
risposta
Javascript, analizzato sul client, non è mai sicuro al 100%. Ci sarà sempre essere modi per scoprire cosa fa. Qualche giorno fa ho persino visto uno strumento che decomprime javascript così l'unica cosa che puoi fare è usare nomi di variabili "brutti" (o, in realtà, fare in modo che un javascript packer trasformi i tuoi nomi di variabili "buoni" in brevi/brutti/senza senso)
Per proteggere i risultati del gioco, è necessario spostare parte della logica di gioco sul server in modo che il client non possa inviare risultati arbitrari.
Riassumendo: non mettere segreti nel codice javascript e non fidarsi di nulla proveniente dal client - non importa se proviene da un modulo o generato/inviato tramite javascript.
Si dice che per il gioco che invia punteggi elevati al server sarebbe troppo facile modificare javascript e falsificare la richiesta?
Tranne nel caso, quando si utilizza la crittografia sul client, è il modo più semplice per falsificare tale richiesta non analizzando nemmeno lo script ma inviando una richiesta falsa. Tutto ciò che si invia tra server e browser può essere facilmente visualizzato sul computer, analizzato e modificato.
Grazie. Anche se trasferisco parte della logica di gioco, l'algoritmo per generare i dati da inviare al server è ancora molto aperto. Inoltre, questo non sarebbe un fattore importante nell'adozione di HTML5, specialmente per quanto riguarda i giochi? Perché/Come sono le persone che prevedono che il flash è in via di uscita? – BlueSilver
Flash è quasi insicuro quanto javascript. Esistono buoni decompilatori di ActionScript e anche se ciò non fosse possibile, si potrebbe comunque annusare la richiesta inviata al server. Oltre a questo, molti giochi flash sono solo per divertimento, non per premi ecc. Quindi non importa affatto se la gente imbroglia lì o no. – ThiefMaster
Ci scusiamo per averlo chiesto ripetutamente, ma questo non sarebbe un fattore importante per l'adozione di HTML5? Inoltre, sniffare la richiesta non è facile come visualizzare la fonte. Inoltre, ci sono portali di giochi in flash dove ottenere punteggi alti potrebbe farti guadagnare soldi, quindi l'imbroglio sarebbe importante. – BlueSilver