2013-03-02 13 views
17

Attualmente sto sviluppando un'estensione per Chrome e un plugin jQuery per caricarlo e venderlo su Codecanyon. Quando "Ispeziono la fonte" della pagina e faccio clic sulla scheda "Risorse", il file javascript sembra vuoto. Come fa Codecanyon a farlo? Voglio avere la prevenzione dei furti di file anche nel mio sito, ma non so come farlo. Conosco php e javascript e non c'è alcun metodo per farlo, perché il browser scarica il file per eseguirlo.Come posso evitare il furto del codice javascript?

È possibile vedere l'esempio here.

+7

Il file è vuoto perché il codice JS effettivo del conto alla rovescia si trova in 'jquery.js'. Non puoi nasconderlo finché è lato client. – Arthur

+2

http://en.wikipedia.org/wiki/Obfuscation_(software) - http://www.dmoz.org/Computers/Programming/Languages/JavaScript/Tools/Obfuscators/ – mplungjan

risposta

10

È possibile solo provare a renderlo meno leggibile (tramite minifaction e offuscamento), ma il codice è ancora trasferito e può essere decodificato.

Il codice effettivo nell'esempio viene scaricato con il file jquery.js.

14

Se si vede che è vuoto, significa che è vuoto. Non c'è modo di nascondere il codice javascript da un client che deve eseguire il codice.

36

Non è possibile nasconderlo perché è necessario che il browser lo esegua. Semplice come quella.

È necessario comprendere che si tratta di uno script eseguito dal lato client. Non è compilato (il che significa che non è un binario (0 e 1 linguaggio macchina)). Quindi è liberamente leggibile.

Tuttavia si può offuscare utilizzando strumenti come YUI compressor

Fondamentalmente questo tipo di strumenti rimuovere la spaziatura supplementare, ritorno della linea schede e rinominare i metodi (come il metodo "a" sta per "MyShinyMethodWhoMakesNiceStuff") e variabili. Ciò rende molto difficile leggere e capire il codice. L'ingegneria inversa è quindi più difficile da raggiungere.

Alcuni usano trucchi come base64 o altri codifica e decodificano parte del codice con una funzione, ma sono solo trucchi e non ingannano l'occhio.

Con l'offuscamento, le persone trascorrono molto più tempo nell'analisi del codice e il furto è quindi molto più complesso e richiede tempo. Diciamo che hai creato un bel plugin per javascript che rende ogni sfondo bianco in viola (ok, non è un ottimo esempio, ma l'ho usato solo per avere un esempio di immagine). Qualcuno potrebbe volerlo rubare e renderlo blu invece che viola. Se il codice viene offuscato, potrebbe pensare che è più facile copiare la tua idea e riscriverla da sola con il suo codice e lo sfondo blu, gli ci vorrà meno tempo degli ingegneri inversi e capire i tuoi, più facili da mantenere nel tempo. Alla fine, "solo" "ruberà" la tua idea ma non il tuo codice.

Penso che alla fine, è solo una questione di tempo.

+1

Ma con ciascuno di questi strumenti, il il codice può essere invertito (anche se è difficilmente leggibile). – Arthur

+0

@Arthur: ovviamente. L'unico modo è quello di scoraggiare la gente dal cercare di non offuscarla. Lo preciserò nel mio post. – moxy

+0

Sarebbe bello se avessero una delle applicazioni thease che genererebbe CASUALamente nomi/variabili. –

-7

Liblock è un piccolo strumento costruito da me. Crittografa le tue sorgenti JS - non è semplice oscurità per offuscamento, ma buona sicurezza tramite crittografia.

Quando si ispeziona il DOM nel client, tutto ciò che vedrete è: nplreq (url) per ogni script che si associa a HTML head.

Guarda come funziona qui liblock-demo - questa è una demo solo per nascondere gli script in "nopro_lib" e "xscroll.js".

La crittografia e la decrittografia sono totalmente trasparenti per il browser. È testato con Firefox, Chrome, Opera, Konqueror, IE8-10 su PC e con Dolphin e Safari su un tablet Android.

Le sorgenti sono nascoste in modo sicuro e solo con grandi sforzi possono essere nuovamente aperte. La crittografia viene eseguita con AES (Rijndael 256) utilizzando chiavi one-shot che vengono negoziate tra client e server (liblock-) utilizzando Diffie-Hellman.

+8

"buona sicurezza tramite crittografia" - questo è BS. Se il browser può decifrarlo, anche chiunque altro può farlo. Quindi in realtà è peggio di un'offuscamento. – ThiefMaster

+2

@ThiefMaster Sembra che digitando '$ ('script')' nella console è sufficiente per rompere la sicurezza qui. –

Problemi correlati