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.
- 1. Utilizzo del codice JSP in JavaScript
- 2. L'errore Javascript interrompe l'esecuzione del codice
- 3. Catalogo vuoto per l'internazionalizzazione del codice JavaScript
- 4. Cosa attiva l'esecuzione del codice JavaScript?
- 5. Ottimizzazione del codice Javascript per Find()
- 6. Analisi del codice Javascript e best practice
- 7. Codice nazionale del telefono corrispondente con javascript
- 8. Copertura del codice JavaScript con Jasmine
- 9. Cos'è questo codice in Javascript?
- 10. Oo completamento del codice javascript in qualsiasi ID
- 11. Eliminazione del codice guasto da casi di commutazione in JavaScript
- 12. Debug del codice di estensione in firefox (javascript debugger/venkman)
- 13. codice Parse JavaScript in C#
- 14. codice chiave JavaScript =/= codice char
- 15. come nascondere codice javascript
- 16. Inserire codice javascript in html con Express
- 17. Come evitare il codice spaghetti in Javascript
- 18. Divisione del codice GWT?
- 19. Linting in tempo reale del codice C
- 20. Javascript come codice debuggabile
- 21. Come codice Javascript 'minify'
- 22. Organizzazione codice javascript
- 23. Javascript: misura il tempo di esecuzione del codice online
- 24. L'incapsulamento del codice Javascript negli oggetti influisce sulle prestazioni?
- 25. Esecuzione di mongoimport all'interno del codice con Javascript/Node.js
- 26. JavaScript best practice: gestione del codice specifico Firebug
- 27. Quando un errore javascript interrompe il resto del codice?
- 28. Strumento di controllo del codice JavaScript o verificatore
- 29. Copertura del codice JavaScript nei moduli RequireJS/AMD
- 30. Rimanda analisi del codice JavaScript - Google Page Speed
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