Dovrei preoccuparmi di "pirateria Javascript"?

11

Se scrivo un'app JavaScript sul lato client (con un po 'di interazione con il server), come posso impedire alle persone di copiare i file Javascript sul proprio sito? Dovrei, per niente?

    
posta sjmulder 31.01.2009 - 12:53
fonte

14 risposte

34

Se ti importa? No.

Perché? Perché non c'è nulla che tu possa davvero fare al riguardo.

Alcuni hanno prevedibilmente suggerito l'offuscamento. Questo funziona per 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.

    
risposta data 31.01.2009 - 13:01
fonte
14

Il meglio che puoi fare è offuscare il codice in modo che gli altri abbiano difficoltà a modificarlo. Certo, tieni una copia dell'originale.

Come bonus, il codice offuscato dovrebbe essere più piccolo e quindi più veloce da caricare.

    
risposta data 31.01.2009 - 12:57
fonte
9

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 guadagnare in una piccola nicchia di imprese, ma molto probabilmente non useranno comunque codice copiato illegalmente.

2) Ti preoccupi che il tuo concorrente copi il tuo sito. Se lo fanno, puoi star certo che sarai sempre un passo avanti a loro. Più probabilmente, scriveranno il loro codice e copieranno l'aspetto e il comportamento del tuo sito e nulla potrà salvarti da quello, tranne che per ottenere stupidi brevetti software, ad es. Amazon acquisti one-click.

IOW, non preoccuparti. Metti un avviso sul copyright chiedendo alle persone di dirti se usano la tua roba. Se abbastanza persone lo fanno, usa il fatto che hai creato una libreria utile per ottenere credito tra i geek, il che probabilmente sarà utile a lungo termine.

    
risposta data 31.01.2009 - 14:19
fonte
6

No. Non cercare di "proteggere" un linguaggio di scripting lato client. L'offuscamento non funziona. Minifying ha i suoi usi (ma l'anti-pirateria è non uno di essi)

Raccomando anche contro minificare il codice a meno che non si ottengano migliaia di visite al giorno, in cui alcuni kilobyte in più per richiesta saranno una differenza notevole (e lo faranno solo dopo aver compresso tutte le immagini stai usando correttamente, il che ti farà risparmiare molto di più di pochi KB, settando la cache correttamente e così via).

Anche se minify / offuscate il Javascript, le persone possono ancora abbastanza banalmente copiarlo sul loro sito. Sarà un po 'più difficile da modificare, ma a seconda di ciò che fa lo script, potrebbe non avere importanza. Ad esempio, l'editor WMD menzionato è fornito, per uso pubblico, minified.

L'offuscamento e la minimizzazione possono essere simili, ma se dovessi offuscare correttamente il codice, dovresti sostanzialmente riscrivere ampi segmenti di esso per renderlo difficile da capire. Questo rende il codice più complicato e lontano più difficile da gestire (per te), quindi introdurrà bug .. Se il tuo Javascript diventa bacato, ciò impedirà la pirateria, dal momento che nessuno vorrà usarlo (o rubarlo) .. ma, err, non è così buona.

Una delle grandi cose di Javascript è che chiunque può fare clic con il tasto destro / view-source e imparare Javascript guardando il codice di lavoro in tempo reale. Se sei preoccupato per le persone che guardano il codice e lo copiano, il web / Javascript non è la lingua giusta ..

Ti consiglio di inserire un commento all'inizio di tutti i tuoi file .js e <script> blocchi, con le tue informazioni (nome, sito Web) e una licenza di qualche tipo. A seconda di cosa è il codice, magari mettendo un avviso che dice "Se si utilizza tutto o parte di questo codice in un progetto, per favore fatemelo sapere!" potrebbe essere molto più efficace di "Non usare questo codice per nessun altro scopo, mai!"

    
risposta data 31.01.2009 - 14:53
fonte
4

Potresti offuscare (o almeno minimizzare) il codice per scoraggiarlo (anche se non è inarrestabile per qualcuno che ha tempo. Per esempio, deobfuscation di StackOverflow dell'editor WMD (ma questo era per una buona ragione!)) .

In realtà qualsiasi codice che inserisci frontend sarà pubblico e disponibile a tutti da vedere / utilizzare.

    
risposta data 31.01.2009 - 12:57
fonte
4

Perché preoccuparsene del tutto? Se i tuoi copioni valgono la pena di rubare, potresti invece renderli open source e ottenere aiuto per perfezionarli.

    
risposta data 31.01.2009 - 13:01
fonte
4

Non puoi davvero dal momento che è un linguaggio interpretato che viene sempre consegnato sotto forma di codice sorgente. Anche l'offuscamento non aiuterà molto se il pirata è motivato abbastanza.

(Esempio di caso: Editor WMD StackOverflow , che potrebbe essere - stricly speaking - essere visto come Pirateria, anche se so che Jeff e Dana avevano solo buone intenzioni)

    
risposta data 31.01.2009 - 14:04
fonte
4

No. Non ti devi preoccupare affatto.

Se la tua attività dipende dalla segretezza del tuo codice JavaScript, c'è qualche problema serio con esso.

Altrimenti, non preoccuparti. Potresti provare a ridurre il codice JavaScript per rendere le pagine più veloci.

    
risposta data 31.01.2009 - 15:59
fonte
3

Uso GWT (il Google Web Toolkit) per scrivere applicazioni web, in cui il codice è tutto scritto in Java e può essere debugato e testato con strumenti basati su Java, ma viene convertito in JavaScript per il rilascio.

Quando non è in modalità PRETTY o DETAILED , il codice JavaScript generato da GWT è molto ottimizzato e offuscato, rendendolo estremamente poco pratico da decodificare. (Un obfuscator JavaScript tradizionale fornirà una parte di questi benefici, ma non dove le ottimizzazioni dipendono dalla capacità di GWT di eseguire un'estrazione dettagliata del ramo e un'analisi del percorso del codice).

Detto questo, in generale, sono -1 su 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 un qualsiasi concorrente in realtà sta facendo soldi veri con qualcosa che ha rubato senza permesso, questo li spinge ad avere quei soldi (o, potenzialmente, triplicare la somma) portati via in una causa; la concorrenza legittima e seria non andrà su questa strada, e perché preoccuparsi dell'altro tipo?

    
risposta data 31.01.2009 - 14:00
fonte
2

Usiamo molto codice Javascript (e molto lato server) per la nostra applicazione web, e abbiamo scelto di "offuscare" i Javascripts rimuovendo spazi bianchi, interruzioni di linea, ecc. il tuo codice, ma rendilo molto difficile da leggere & capire, e molto probabilmente altri non si preoccuperanno a causa dello sforzo richiesto.

Il motivo per cui lo facciamo, tuttavia, non è tanto il fatto che non vogliamo che nessuno copi parti del nostro codice, ma piuttosto scoraggi i nostri partner / clienti a cui forniamo il codice dall'apportare modifiche direttamente in "i nostri file "(per evitare problemi quando è installato il prossimo aggiornamento) ...

Nota: L'offuscamento ha uno svantaggio di cui dovresti essere a conoscenza, però: se hai mai bisogno di eseguire il debug di quel codice di script, non sarai in grado di lavorare con l'informazione offuscata, quindi questo implicherà sempre la copia del 'leggibile' file sul server.

    
risposta data 31.01.2009 - 13:00
fonte
1

Partendo dal presupposto che qualsiasi javascript sufficientemente buono verrà raccolto da altri, che ne dici di nuotare con la corrente e sfruttarla al massimo?

Sbattete su di essa una licenza che ne consente l'uso pur richiedendo per esempio l'attribuzione. Forse con una clausola non commerciale come anche alcune varianti di Creative Commons, se proprio devi.

    
risposta data 31.01.2009 - 14:59
fonte
1

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.

    
risposta data 01.02.2009 - 06:16
fonte
0

Se si dispone di segreti commerciali, è possibile spostare le parti più sensibili del codice in ActionScript (Flash). È essenzialmente la stessa lingua di JavaScript, ed è memorizzato in forma tokenizzata.

    
risposta data 01.02.2009 - 06:01
fonte
0

Se sei preoccupato per determinati hacker hardcore che rubano il tuo codice, mi spiace, 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() ; questo potrebbe essere mascherato da (o incluso) qualcosa che ottiene dati JSON e li usa per popolare la pagina.

    
risposta data 19.01.2011 - 09:49
fonte

Leggi altre domande sui tag