Dovrei preoccuparmi della "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 affatto?

Risposte:


34

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.


1
Se riesco a capire cosa devo sapere da Java smontato (presumibilmente) offuscato, penso di poter gestire Javascript e difficilmente sono un esperto di tale "hacking" o reverse engineering. "L'informazione desidera essere libera" (citazione che ho sentito da qualche parte).

2
Javascript ha una difesa innata: è legato al codice sul lato server, che è inaccessibile. L'offuscamento è un placebo. Inoltre, rende più difficile diagnosticare le segnalazioni di errori ottenute. Se qualcuno ti strapperà (e penso che stai esagerando il valore del tuo codice JS) non puoi fare molto

1
E qual è stato il bel trucco in questione?

2
I voti negativi mi fanno ridere. Javascript è meglio usato come utility per migliorare il tuo sito. L'unico codice che vale la pena proteggere è il codice che espone informazioni sul funzionamento interno del tuo sito e della tua azienda. Nessuna di queste cose appartiene allo script client per cominciare!

1
@Jim: non lo so. Penso che il conteggio sia attualmente 17 voti positivi, 8 voti negativi e dato che il mio rappresentante di questa risposta è il rappresentante giornaliero ... -16.

14

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.


Si chiama minimizzazione Javascript, no?
Jonathan Leffler,

4
minificazione in realtà
Matt Briggs

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 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.


È un'applicazione web, non una libreria :). Grazie per # 2.

6

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 .jsfile 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!"


4

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.


L'editor WMD non è stato offuscato, è stato solo minimizzato.

La minimizzazione di JavaScript ha anche il piacevole effetto collaterale di offuscarlo anche ... var va = fa (); è oltre che offuscato.
Unkwntech,

4

Perché preoccuparsene affatto? Se vale la pena rubare i tuoi script, potresti invece renderli open source e ottenere aiuto nel perfezionarli.


Oltre a ciò, potresti anche ottenere credito e buone PR per loro. Se non riesci a far funzionare queste cose nel tuo senso degli affari convenzionale, guarda come puoi farle funzionare per te in altri modi.
Jon Hopkins,

4

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)


4

No. Non dovresti preoccuparti affatto.

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

Altrimenti, non preoccuparti. Forse dovresti provare a minimizzare il tuo codice JavaScript per velocizzare il caricamento delle pagine.


3

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à PRETTYo 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?


2

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.


2
Non chiamerei la formattazione di Javascript in un editor o l'utilizzo di una sorta di "bella stampante" per essere un grande sforzo. Ridurre queste cose può essere utile per ridurre la larghezza di banda (cioè minimizzare) ma questo è tutto.

Se il file Javascript è grande, è un grande sforzo. Inoltre, le "stampanti carine" non funzionano bene (o non funzionano affatto) sul tipo di file "una sola riga contiene tutto il codice".

1

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.


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.


0

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.


0

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 XMLHttpRequeste eval()loro; questo potrebbe essere mascherato da (o incluso in) qualcosa che ottiene i dati JSON e li usa per popolare la pagina.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.