Risposte:
Dovrebbe interessarti? No.
Perché? Perché non c'è niente che tu possa davvero fare al riguardo.
Alcuni hanno prevedibilmente suggerito l'offuscamento. Funziona con Java e .Net ma Python, Javascript e Perl sono tutti in chiaro, quindi c'è davvero poco da fare. Il valore nel tuo sito è senza dubbio il lato server, quindi non preoccuparti di Javascript.
Il meglio che puoi fare è offuscare il codice in modo che gli altri abbiano difficoltà a modificarlo. Naturalmente, conservi una copia dell'originale.
Come bonus, il codice offuscato dovrebbe essere più piccolo e quindi più veloce da caricare.
Perché ti preoccupi? Vedo due motivi per cui potrebbe essere: 1) Stai scrivendo una libreria JavaScript commerciale. Soluzione: ottieni un altro piano aziendale, le librerie JavaScript tendono ad essere gratuite. Forse puoi fare soldi in una piccola nicchia di imprese, ma molto probabilmente non useranno comunque codice copiato illegalmente.
2) Temi che il tuo concorrente copi il tuo sito. Se lo fanno, puoi stare certo che sarai sempre un passo avanti a loro. Più probabilmente, scriveranno il proprio codice e copieranno l'aspetto e il comportamento del tuo sito e nulla può salvarti da questo tranne che ottenere brevetti software stupidi, ad esempio lo shopping con un clic di Amazon.
IOW, non ti preoccupare. Metti un avviso sul copyright chiedendo alle persone di dirti se usano le tue cose. Se abbastanza persone lo fanno, usa il fatto che hai creato una libreria utile per ottenere credito tra i geek, che probabilmente sarà utile a lungo termine.
No. Non cercare di "proteggere" un linguaggio di scripting lato client. L'offuscamento non funziona. La minimizzazione ha i suoi usi (ma l'antipirateria non è uno di questi)
Io consiglio anche contro minifying il codice a meno che non si ottiene migliaia di visite al giorno, in cui pochi kilobyte in più per ogni richiesta sarà una notevole differenza (e solo farlo una volta di comprimere tutte le immagini che si sta utilizzando in modo corretto, che vi farà risparmiare molto più di qualche KB, impostare correttamente la memorizzazione nella cache e così via) ..
Anche se minimizzi / offuschi il Javascript, le persone possono comunque copiarlo abbastanza banalmente sul proprio sito. Sarà un po 'più difficile da modificare, ma a seconda di ciò che fa lo script, potrebbe non importare. Ad esempio, l'editor WMD che le persone hanno menzionato viene fornito, per uso pubblico, minimizzato.
L'offuscamento e la minimizzazione possono essere simili, ma se dovessi offuscare correttamente il codice, dovresti sostanzialmente riscriverne grandi segmenti per renderlo difficile da capire .. Questo rende il codice più complicato e molto più difficile da gestire (per tu), quindi introdurrai bug .. Se il tuo Javascript diventa difettoso, ciò impedirà la pirateria, dal momento che nessuno vorrà usarlo (o rubarlo) .. ma, err, non va bene.
Una delle grandi cose di Javascript è che chiunque può fare clic con il pulsante destro del mouse / visualizzare-fonte e imparare Javascript guardando dal vivo, codice funzionante .. Se sei preoccupato per le persone che guardano il codice e lo copiano, il web / Javascript non è ' t la lingua giusta ..
Consiglierei di inserire un commento all'inizio di tutti i tuoi .js
file e <script>
blocchi, con le tue informazioni (nome, sito Web) e una licenza di qualche tipo. A seconda di quale sia il codice, magari mettendo un avviso dicendo "Se usi tutto o parte di questo codice in un progetto, per favore fatemelo sapere!" potrebbe essere molto più efficace di "Non utilizzare questo codice per nessun altro scopo, mai!"
Potresti offuscare (o almeno minimizzare) il codice per scoraggiare questo (anche se non è inarrestabile per qualcuno che ha il tempo. Ad esempio, la deobfuscazione dell'editor WMD di StackOverflow (ma questo è stato per una buona ragione!)).
In realtà qualsiasi codice che metterai frontend sarà pubblico e disponibile a tutti per vederlo / usarlo.
Perché preoccuparsene affatto? Se vale la pena rubare i tuoi script, potresti invece renderli open source e ottenere aiuto nel perfezionarli.
Non puoi davvero perché è un linguaggio interpretato che viene sempre consegnato in forma di codice sorgente. Anche l'offuscamento non aiuterà molto se il pirata è abbastanza motivato.
(Caso esemplificativo: l' editor WMD StackOverflow , che potrebbe essere - a rigor di termini - essere visto come pirateria, anche se so che Jeff e Dana avevano solo buone intenzioni)
Uso GWT (Google Web Toolkit) per scrivere applicazioni Web, in cui il codice è tutto scritto in Java e può essere sottoposto a debug e testato con strumenti basati su Java, ma viene convertito in JavaScript per il rilascio.
Quando non è in modalità PRETTY
o DETAILED
, il JavaScript generato da GWT è altamente ottimizzato e offuscato, rendendolo estremamente poco pratico per il reverse engineering. (Un obfuscator JavaScript tradizionale fornirà una parte di questi vantaggi, ma non laddove le ottimizzazioni dipendono dalla capacità di GWT di eseguire la potatura dettagliata dei rami e l'analisi del percorso del codice).
Detto questo, in generale, sono -1 sull'offuscamento - significa, ad esempio, che i clienti legittimi sono meno in grado di aiutarti a capire i loro problemi, anche quando capita di avere capacità di sviluppo e una copia di FireBug. Sei l'autore originale - conosci il codice meglio di chiunque altro e questo ti dà un vantaggio competitivo rispetto a qualcuno che sta cercando di eseguire un knockoff economico; inoltre, se uno di questi concorrenti sta effettivamente guadagnando soldi veri con qualcosa che ha rubato senza permesso, ciò li apre facendo sottrarre quei soldi (o, potenzialmente, triplicare la somma) in una causa; la concorrenza legittima e seria non seguirà questa strada, e perché preoccuparsi dell'altro tipo?
Utilizziamo un sacco di codice Javascript (e molto lato server) per la nostra applicazione web e abbiamo scelto di "offuscare" i Javascripts rimuovendo spazi bianchi, interruzioni di riga, ecc. Questo non proteggerà realmente il tuo codice, ma rende molto molto difficile leggere e comprendere, e molto probabilmente altri non si preoccuperanno a causa dello sforzo richiesto.
La ragione per cui lo facciamo, tuttavia, non è tanto che non vogliamo che nessuno copi parti del nostro codice, ma piuttosto scoraggi i nostri partner / clienti ai quali consegniamo il codice di apportare modifiche direttamente nei "nostri file" (a evitare problemi quando è installato il prossimo aggiornamento) ...
Nota: l'offuscamento presenta uno svantaggio di cui dovresti essere consapevole, tuttavia: se dovessi mai eseguire il debug di quel codice di script, non sarai in grado di lavorare con l'infrazione offuscata, quindi ciò comporterà sempre la copia del file "leggibile" nella prima il server.
Partendo dal presupposto che qualsiasi javascript sufficientemente buono verrà raccolto da altri, che ne dici di nuotare con la corrente e trarne il massimo?
Schiaccia una licenza su di essa che ne consenta l'utilizzo, ad esempio richiedendo l'attribuzione. Forse con una clausola non commerciale come anche alcune varianti di Creative Commons, se proprio devi.
La maggior parte della logica dell'applicazione dovrebbe essere lato server. Javascript dovrebbe gestire solo elementi della GUI e semplici interazioni con il server. Se il tuo codice Javascript contiene una logica applicativa sufficiente a preoccuparti che qualcuno lo rubi, probabilmente stai facendo qualcosa di sbagliato.
Se si hanno segreti commerciali, è possibile spostare le parti più sensibili del codice su ActionScript (Flash). È essenzialmente la stessa lingua di JavaScript ed è archiviato in forma tokenizzata.
Se sei preoccupato che determinati hacker hardcore rubino il tuo codice, mi dispiace, non c'è nulla che tu possa fare. Ma ci sono modi per renderlo scomodo per i ladri occasionali. Un modo relativamente semplice per farlo è caricare alcune parti usando XMLHttpRequest
e eval()
loro; questo potrebbe essere mascherato da (o incluso in) qualcosa che ottiene i dati JSON e li usa per popolare la pagina.