Domanda

Sto lavorando alla creazione di uno strumento di sviluppo scritto in JavaScript.

Questo non sarà un progetto open source e sarà venduto (si spera) come prodotto commerciale.

Sto cercando il modo migliore per proteggere il mio investimento.L'utilizzo di un offuscatore (programma di modifica del codice) è sufficiente per proteggere ragionevolmente il codice?

Ci sono altre alternative di cui non sono a conoscenza?

(Non sono sicuro che offuscatore sia la parola giusta, è una delle app che prende il tuo codice e lo rende molto illeggibile.)

È stato utile?

Soluzione

Ti svelerò un segreto.Una volta capito, ti sentirai molto meglio riguardo al fatto che l'offuscamento di Javascript è davvero utile solo per risparmiare larghezza di banda quando si inviano script via cavo.

Non vale la pena rubare il tuo codice sorgente.

So che questo è uno shock per l'ego, ma posso dirlo con sicurezza senza aver mai visto una riga di codice che hai scritto perché al di fuori dei pochissimi ambiti di sviluppo in cui avviene una vera magia, è vero per tutto il codice sorgente.

Supponiamo che domani qualcuno ti metta davanti alla porta una pila di DVD contenenti il ​​codice sorgente di Windows Vista.Cosa potresti farci?Certo, potresti compilarlo e regalarne delle copie, ma questo è solo un passo in più rispetto a copiare la versione commerciale.Potresti trovare e rimuovere faticosamente il codice di controllo della licenza, ma è qualcosa che qualche ragazzo intelligente ha già fatto ai binari.Sostituire il logo e la grafica, far finta di averlo scritto tu e commercializzarlo come "Vicrosoft Mista"?Verrai catturato.

Potresti dedicare un'enorme quantità di tempo a leggere il codice, cercando di capirlo e "rubando veramente la proprietà intellettuale" che Microsoft ha investito nello sviluppo del prodotto.Ma rimarrai deluso.Scopriresti che il codice era una lunga serie di decisioni banali, prese una dopo l'altra.Alcuni sarebbero più intelligenti di quanto potresti pensare.Alcuni ti lascerebbero scuotere la testa chiedendoti che tipo di scimmie stanno assumendo laggiù.La maggior parte ti farebbe semplicemente alzare le spalle e dire "sì, è così che si fa".

Nel processo imparerai molto sulla scrittura di sistemi operativi, ma ciò non danneggerà Microsoft.

Sostituisci "Vista" con "Leopard" e i paragrafi precedenti non cambieranno per niente.Non è Microsoft, lo è Software.La metà delle persone su questo sito potrebbe probabilmente sviluppare un clone di Stack Overflow, con o senza consultare la fonte di questo sito.Semplicemente non l'hanno fatto.Il codice sorgente di Firefox e WebKit è disponibile affinché chiunque possa leggerlo.Ora vai a scrivere il tuo browser da zero.Ci vediamo tra qualche anno.

Lo sviluppo del software è un investimento di tempo.È assolutamente arrogante immaginare che quello che stai facendo sia così speciale che nessuno potrebbe clonarlo senza guardare la fonte, o anche che renderebbe il loro lavoro molto più semplice senza una quantità utilizzabile (e facilmente rilevabile) di taglia e incolla.

Altri suggerimenti

Sono profondamente in disaccordo con la maggior parte delle risposte sopra.

È vero che qualsiasi software può essere rubato nonostante l'offuscamento, ma almeno ciò rende più difficile estrarre e riutilizzare le singole parti del software e questo è il punto.

Forse è più economico e meno rischioso usare un offuscamento piuttosto che lasciare il codice aperto e combattere in tribunale dopo che qualcuno ha rubato le parti migliori del nostro software e ha creato una pericolosa concorrenza.

Il codice non offuscato sussurra:

  • Dai, analizzami, riutilizzami.Forse potresti creare un software migliore usando me.

Il codice offuscato dice:

  • Vai via, amico.È più economico usare le tue idee piuttosto che provare a derubarmi.

Combatterai una battaglia persa se provi a offuscare il tuo codice nella speranza che qualcuno non lo rubi.Potresti impedire al browser occasionale di raggiungerlo, ma qualcuno dedicato sarebbe quasi certamente in grado di superare qualsiasi misura tu utilizzi.

In passato ho visto persone fare diverse cose:

  1. Incolla molto spazio bianco nella parte superiore della pagina con un messaggio che informa le persone che il codice non è disponibile, quando in realtà devi solo scorrere alcune pagine verso il basso per trovarlo.
  2. Eseguendolo attraverso un codificatore di qualche tipo, è così utile in quanto può essere eseguito semplicemente attraverso il decodificatore.
  3. Un altro metodo è ridurre i nomi delle variabili a un carattere e rimuovere gli spazi bianchi (anche questo è un fattore di efficienza).

Esistono molti altri metodi.

Alla fine, è probabile che i tuoi sforzi impediscano al browser occasionale di vedere i tuoi contenuti.Se arriva qualcuno dedicato, allora non potrai fare molto.Dovrai convivere con questo.

Il mio consiglio sarebbe quello di creare un prodotto davvero fantastico che attiri il maggior numero di persone e batta qualsiasi concorrenza avendo il miglior prodotto/servizio/comunità e non il codice più offuscato.

Ti trovi sempre di fronte al fatto che qualsiasi utente che accede alla tua pagina web scaricherà una versione funzionante del tuo sorgente Javascript.Essi Volere avere il codice sorgente.Offuscarlo potrebbe rendere molto difficile il riutilizzo da parte di qualcuno con l'intento di farlo rubare il tuo duro lavoro.Tuttavia, in molti casi qualcuno può addirittura riutilizzare la fonte offuscata!Oppure, nel peggiore dei casi, possono sbrogliarlo a mano ed eventualmente comprenderlo.

Potrebbe essere un esempio di una situazione come la tua Google Maps.La fonte Javascript è chiaramente offuscata.Tuttavia, per una logica veramente privata/sensibile, inseriscono i dati nel server e fanno in modo che il server elabori tali informazioni utilizzando XMLHttpRequests (AJAX).Con questo design le parti importanti sul lato server sono controllate molto più strettamente.

Probabilmente è la cosa migliore che puoi fare.Tieni solo presente che chiunque abbia sufficiente dedizione può probabilmente de-offuscare il tuo programma.Assicurati solo di sentirti a tuo agio prima di intraprendere il tuo progetto.Penso che il problema più grande sarebbe controllare chi lo utilizza sul proprio sito.Se qualcuno visita un sito con il tuo codice e gli piace ciò che fa, non importa se non capisce cosa fa il codice o non riesce a leggerlo, quando può semplicemente copiare il codice e usarlo sul proprio sito.

Un offuscatore non ti aiuterà affatto se qualcuno vuole capire il codice.Il codice esiste ancora sul computer client e possono prenderne una copia e studiarlo a loro piacimento.

Semplicemente non c'è modo di nascondere il codice scritto in Javascript poiché il codice sorgente deve essere passato al browser per l'esecuzione.

Se vuoi nascondere il tuo codice, hai le seguenti opzioni:

1) Utilizzare un ambiente in cui il codice compilato (non sorgente) viene scaricato sul client, ad es.Flash o Silverlight.Non sono nemmeno sicuro che sia infallibile, ma è sicuramente molto meglio di Javascript.

2) Avere un back-end sul lato server che svolge il lavoro e un thin client che effettua solo richieste al server.

Direi di sì, è sufficiente assicurarti anche di comprimere anche il codice utilizzando uno strumento come L'imballatore di Dean Edward o simili.Se pensi a cosa è possibile fare con strumenti come .NET Reflector in termini di reverse engineering del codice compilato/IL in .NET, ti rendi conto che non puoi fare nulla per proteggere completamente il tuo investimento.

D'altra parte, ricorda che anche le persone che rilasciano il loro codice sorgente sembrano cavarsela abbastanza bene in ogni caso: è loro esperienza che le persone vogliono più della loro proprietà intellettuale.

l'offuscatore di codice è sufficiente per qualcosa che necessita di una protezione minima, ma penso che sicuramente non sarà sufficiente per proteggerti davvero.se hai pazienza puoi davvero smantellare il tutto..e sono sicuro che ci sono programmi per farlo per te.

Detto questo, non puoi impedire a nessuno di piratare i tuoi contenuti perché alla fine romperanno comunque qualsiasi tipo di protezione che crei.ed è particolarmente facile nel linguaggio di script in cui il codice non è compilato.

Se stai utilizzando un altro linguaggio, magari Java o .NET, puoi provare a fare cose come "chiamare a casa" per verificare che un numero di licenza corrisponda a un determinato URL.Il che funziona se la tua app è una sorta di app online che sarà sempre connessa online.Ma avendo accesso alla fonte, le persone possono facilmente ignorare quella parte.

In breve, Javascript è una scelta sbagliata per quello che stai facendo.
Un passo avanti rispetto a quello che stai facendo è forse utilizzare un backend di servizi web per ottenere i tuoi dati.Lascia che sia il servizio web a gestire il processo di autenticazione/verifica.Richiede un po' di lavoro per assicurarsi che sia a prova di proiettile, ma è così Potrebbe lavoro

Se questo è per un sito web, che per sua stessa natura mette la visualizzazione del suo codice a un clic di menu, è lì Veramente qualche motivo per nascondere qualcosa?Se qualcuno vuole rubare il tuo codice, molto probabilmente farà lo sforzo di rendere leggibile anche il codice più distorto.Guarda i siti Web commerciali, non offuscano il loro codice e nessuno esce e ruba il codice dalle app Google.Se sei davvero preoccupato per il furto del codice, direi di scriverlo in qualche altro linguaggio compilato.(il che ovviamente distrugge l'intera webapp...) Anche in questo caso, non sei del tutto al sicuro, ci sono molti decompilatori là fuori.

Quindi, davvero, non c’è modo di fare quello che vuoi di fronte a qualcuno con sufficiente motivazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top