2010-05-10 13 views
11

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

8

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.

+0

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

+1

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

+0

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

0

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.

Problemi correlati