Come crittografare il codice sorgente sul server web?

6

Ho un'applicazione web sviluppata usando Python, HTML, CSS & JavaScript.

Il cliente lo installa in una qualsiasi delle proprie macchine e lo utilizza attraverso la loro LAN. In breve, il cliente imposta il server web in uno qualsiasi dei propri computer.

Poiché è un'applicazione Web, tutto il codice sorgente è aperto per il cliente nella directory radice del documento del server web. Voglio crittografare l'intero codice sorgente nella directory radice del documento in modo tale da non compromettere il funzionamento dell'applicazione web.

C'è un modo per crittografare Python, HTML, CSS e amp; JavaScript per questo scopo.

    
posta HOT 12.01.2012 - 12:05
fonte

3 risposte

18

Una volta che i tuoi clienti hanno un programma che possono eseguire, saranno in grado di eseguire il reverse engineering con un tempo e un'ampiezza sufficienti; abilità. Questo è solo un dato di fatto.

Se vuoi davvero fermarlo, dovresti ospitare ed eseguire il software da solo ( SaaS )

Detto questo, qualcosa come Python sarà più facile di C. Dividiamolo nelle 3 parti che hai chiesto (e poi ancora di più)

HTML

Indipendentemente da ciò che fai qui, verrà decrittografato nel browser (anche nel modello SaaS), quindi la crittografia sul server è inutile. Anche minimizzare è inutile dato che i browser moderni come Firefox e Chrome lo formattano in modo ordinato.

CSS

Vedi sopra - non perdere tempo

JavaScript

Yahoo ha uno strumento che può offuscare per te. Prova YUI Compressor . No, non criptarlo entrambi sul lato server poiché deve essere servito al client non crittografato *, il che vanificherebbe lo scopo.

Python

Questo è l'unico posto in cui vuoi veramente passare il tuo tempo, proteggendo la tua logica di business. Ci sono diversi metodi che troverai su google come la crittografia su disco e poi la decrittografia in fase di esecuzione. Tutti questi metodi hanno problemi, come i colpi di performance e il dover fornire il decodificatore (consentendo quindi di decrittografarlo chiunque).

Il tuo miglior beat per impedire a coloro che non si accaniscono di rubare il tuo codice sarebbe di usare un offuscare il tuo codice Python .

Riepilogo

L'unico codice che puoi impedire a qualcuno di ottenere è il codice che non gli dai. HTML, CSS e amp; Javascript sempre finirà sulla tua macchina degli utenti in un modo che possono utilizzare, quindi presume che siano in grado di rubarlo se lo desiderano, sfortuna.

Per proteggere il tuo codice server, il solo metodo sicuro è NON darglielo, eseguendolo in qualcosa come un modello SaaS.

Se ciò non è possibile, il meglio che puoi fare è renderlo più difficile per loro.

Test

Assicurati sempre di testare la versione di produzione che fornirai ai tuoi clienti. Ciò garantisce che eventuali passi di build speciali (come l'offuscamento e la minimizzazione) non interrompano il software.

Cose aziendali noiose

Quindi tutto quanto sopra (e la tua domanda) ha affrontato questo problema dal lato tecnico. L'altro lato della medaglia è dal lato commerciale / legale.

Se si dispone di un numero limitato di client, è possibile fornire diverse versioni "filigranate" del software a ciascun client. In questo modo, aumenti la possibilità di rintracciare il software rubato alla fonte e intraprendere qualsiasi azione legale appropriata.

Non dimenticarti, se sei impegnato in un'attività seria, sarebbe meglio consultare un avvocato su come provare e far rispettare la proprietà del tuo software, nel caso le cose dovessero andare male.

* non è strettamente vero, potresti servirlo crittografato e avere altri Javascript che lo decodificano al volo, ma questo sarebbe quasi inutile in quanto aggiunge un successo in termini di prestazioni e dovrai comunque fornire l'hacker con il decrypter ...

    
risposta data 12.01.2012 - 15:24
fonte
5

No .

HTMl, CSS e JavaScript Non possono essere crittografati poiché il browser deve leggerlo come testo normale. Il meglio che puoi fare è offuscarlo.

Per Python puoi compilarlo in una DLL, quindi non stai definendo il codice sorgente del client. Ma può ancora essere decompilato.

Per Arguments Sake, diciamo fornito un server Web personalizzato affinché i tuoi client possano usare questo server Web personalizzato legge i file Python crittografati, quindi li compila ed esegue. Un hacker potrebbe ancora Compilare il server Web personalizzato e ottenere l'accesso completo al modulo di decrittografia e alle chiavi di crittografia.

Se il codice (oi dati) in qualsiasi forma sono su un altro hardware, il codice può essere rubato.

La mia prova di questo: basta guardare tutti i siti di warez, tutto viene hackerato.

    
risposta data 12.01.2012 - 15:26
fonte
2

Per quanto riguarda Python, ci sono diversi modi per affrontarlo, ma dovrai fare un po 'di sollievo. Ecco alcuni pensieri:

  1. file zip contenente solo i file .pyc. Ciò significherebbe che dovrai dettare l'esatta versione e architettura di Python o fornire più file .zip, uno per ogni architettura che stai supportando.

  2. PEP 302 ha introdotto l'importlib che consente di integrare il proprio importatore personalizzato. Gli esempi che richiedono importatori personalizzati sono py2exe, freeze, ecc. Dovresti essere in grado di integrare il tuo importatore per leggere i file zip crittografati o qualsiasi formato, anche se probabilmente vorrai inserire un po 'di quel codice in C compilato come modulo.

Per quanto riguarda Javascript, se intendi lato client, allora no. Ma per node.js, si potrebbe fare del lavoro sul motore V8 in cui si carica / salva la versione compilata di Javascript (simile a un .pyc), se disponibile invece di utilizzare l'origine. Probabilmente avrai bisogno di uno sviluppatore C per farlo funzionare e potrebbe richiedere l'applicazione di patch a versioni specifiche di node.js.

    
risposta data 26.10.2013 - 15:39
fonte