Domanda:
Dobbiamo proteggere il codice sorgente dell'applicazione web dal furto da parte degli host web attraverso l'offuscamento?
Rajat Gupta
2013-08-05 19:20:47 UTC
view on stackexchange narkive permalink

Vale la pena offuscare il codice sorgente di un'app Web Java in modo che l'host Web non possa fare un uso sbagliato del codice o addirittura rubare la tua attività? In caso affermativo, come dovrebbe essere affrontato? Come dovremmo offuscare?

Siamo una nuova start up che lancia un prodotto sul mercato. Come possiamo proteggere il codice sorgente del nostro prodotto / applicazione web?

Questo è lo scopo della crittografia completamente omomorfica.
se la sicurezza è una questione così importante, ospitare il proprio server è un'opzione o no?
* Può * (BIG può) avere senso presumere che l'host web sia dannoso, ma un host dannoso pone anche una serie di altri problemi. Se sei seriamente intenzionato a non fidarti dell'host, devi rivolgerti anche a tutti quelli, ea quel punto diventa piuttosto impraticabile.
sì .. è vero .. quindi, è spesso una questione di fiducia? Tutti gli altri non fanno alcun passo nella paura che questo possa accadere con loro? Cosa fanno generalmente gli altri per impedirlo?
Se consenti l'accesso al codice binario a qualcuno, non puoi essere sicuro che non verrà decodificato. È semplicissimo.
Se puoi rubare il tuo intero "prodotto" attraverso il web, la tua startup avrà comunque vita breve. Il valore della startup è dimostrare una buona idea, ottenere il consenso degli utenti e stabilire le persone dietro a tutto come esperti in un compito molto specifico. La maggior parte delle persone che vorrebbero acquisirti potrebbe scrivere la propria "Applicazione X", ma le parti non ovvie, le persone e l'idea sono ciò che comprano.
Se diffidi così tanto dal provider di hosting, forse ospitare tu stesso il sito sarebbe un'alternativa migliore.
Questo suona molto come "Non posso dirti la mia idea, ma è fantastico: scriverai un'app per me?" L'idea che un host guardi il tuo sito web e dica "rubiamo quella fantastica idea e il codice - chiudiamo questa attività di hosting e combattiamo una causa" è ridicola.
Quindici risposte:
Adi
2013-08-05 19:30:35 UTC
view on stackexchange narkive permalink

Un provider di hosting dannoso può fare molto di più che semplicemente rubare il tuo codice. Possono modificarlo per introdurre backdoor, possono rubare i dati dei tuoi clienti e rovinare l'intera azienda. Deve esistere un rapporto di fiducia tra te e l'host.

Informazioni sul codice sorgente. Se l'autore dell'attacco sta tentando di ottenere l'accesso al tuo codice sorgente, avrà accesso al tuo codice sorgente, offuscato o meno, compilato o interpretato.

Ecco un valore nell'offuscare il tuo codice, in quanto probabilmente lo renderai solo un po 'più difficile da ottenere da un attaccante opportunista occasionale. Ma se il tuo host vuole prenderti, ti prenderanno.

La soluzione? La legge. Firma un contratto con loro e accetta una qualche forma di NDA.

-1
In generale, se è un problema più grande per il tuo provider di hosting, si è sparsa la voce che hanno rubato le tue cose, rispetto a quello che potrebbero guadagnare puoi facilmente fidarti di loro. Ad esempio, Amazon Web Services verrebbe eseguito molto rapidamente se qualcuno dimostrasse di aver rubato parte del codice sorgente, quindi confido che non lo faccia.
L'unica cosa su cui non sarei d'accordo se "c'è un valore nell'offuscare il tuo codice_".
Tom Leek
2013-08-05 19:28:58 UTC
view on stackexchange narkive permalink

Bene, questo richiede tre commenti:

  • Non puoi proteggere i segreti con l'offuscamento del codice. Non proprio . L'offuscamento del codice in qualche modo funziona contro gli aggressori immotivati, ma non è forte. Se c'è un valore commerciale nel superarlo, allora accadrà.

  • Se non ti fidi del tuo servizio di hosting, cerca un altro servizio di hosting. Se la segretezza del tuo codice è importante e vale più di qualche centinaio di dollari, allora dovresti usare il tuo hardware: affittate uno spazio isolato, con serrature e protezioni, e ci gestisci la tua macchina.

  • Il tuo codice esiste come codice compilato (byte) sui server, ma anche come codice sorgente nei tuoi sistemi di sviluppo e nelle teste dei tuoi sviluppatori. Non può essere quel segreto. Come si suol dire, un milione di dollari è sempre sufficiente per svelare i segreti, se non altro corrompendo una delle persone che ne sono state informate.

    (In quest'ultimo caso, potrebbe essere il tuo piano: tu potrebbe desiderare di vedere qualche concorrente più grande semplicemente comprarti.)

La protezione contro il reverse engineering e il furto della tua proprietà intellettuale è normalmente assicurata attraverso mezzi legali, non tecnici.

"mezzi legali" .. devo fare qualche accordo con l'host web prima dell'hosting o nel caso in cui faccia un uso errato del mio codice?
I "mezzi legali" includono copyright, NDA, brevetti ... tutte le armi degli avvocati. In definitiva si tratta di una questione di costo relativo: gli aggressori sceglieranno ciò che è più economico, che si tratti di acquistare la tua start-up o di fare spionaggio e reverse engineering, con il rischio di ritorsioni legali. Rendi forte il tuo caso IP e il processo diventerà potenzialmente troppo costoso, spingendo i tuoi nemici a scegliere il modo legale, noto anche come "far cadere molti dollari sulle tue ginocchia" (si spera).
Xander
2013-08-05 19:29:49 UTC
view on stackexchange narkive permalink

No, non ne vale la pena. Nessuno vuole rubare il tuo codice. Mille milioni di prodotti SaaS sono stati lanciati da individui e aziende che utilizzano hosting di terze parti di una descrizione o di un'altra, e quasi nessuno di loro si è trovato a competere contro se stesso dopo che il codice dei propri prodotti è stato rubato dai propri host. p>

Quindi, dovresti offuscare il tuo codice? Certo, se ti fa sentire meglio. Nessun danno fatto. Stai proteggendo il tuo IP da una minaccia valida? No, non proprio. È una specie di versione per sviluppatori web di un cappello di carta stagnola.

Qualunque cosa tu faccia, non sprecare molto tempo ed energie a pensarci. Prendi la decisione di offuscare o meno, quindi passa a preoccuparti di mitigare le minacce reali.

"Certo, se ti fa stare meglio. Nessun male." Non sono nemmeno sicuro che non sia stato fatto del male. Almeno c'è un passaggio di compilazione extra, nel peggiore dei casi mette un sacco di fardello extra sui tuoi sviluppatori. Cosa succede se devono eseguire il debug remoto di un problema? Cosa succede se ci sono messaggi di errore remoti, conterranno dati sensibili? Gli sviluppatori sono in grado di lavorare localmente con codice non offuscato?
@Dorus Quindi sì, aggiunge complessità, il che è negativo. Personalmente non lo sceglierei. Tuttavia, se davvero non riesci a dormire la notte perché sei preoccupato per i banditi con le dita appiccicose che scappano con le tue cose preziose, direi che è un compromesso utile. Avendo lavorato con (e decodificato) un bel po 'di codice offuscato, l'ho visto effettivamente causare alcuni dei problemi che hai evidenziato (e introdurre bug, in un paio di casi) ma non l'ho mai visto aggiungere un enorme onere . Per riassumere, non è l'ideale, ma nemmeno la fine del mondo.
@Xander: può essere sufficiente per ottenere qualche * svantaggio * competitivo, ma il punto è che non lo vedrai mai. Si tratta principalmente di dedicare del tempo a qualcosa di inutile invece di lavorare al successivo miglioramento del sito, o un tempo di reazione più lento a una cattiva esperienza utente quando un bug deve essere risolto.
@kriss D'accordo, certamente, dal momento che non offusco quando ho una scelta. Tuttavia, nella mia esperienza, la configurazione e la gestione di qualsiasi impatto dell'offuscamento tende a richiedere solo una quantità insignificante di tempo e impegno. Ovviamente richiede tempo e fatica che sono sprecati, ma non stai sprecando così tanto. Qualsiasi caratteristica che potresti costruire al suo posto sarebbe banale.
@Xander - fondamentalmente uno di quegli elementi che spuntano dalla lista sugli audit che tutti nella sicurezza sanno essere un esercizio di futilità, ma lo includiamo in modo che la direzione non istruita sappia che abbiamo riempito la scatola, che faccia qualcosa o no .
@FiascoLabs Esattamente. Purtroppo è troppo spesso il caso.
Dan Pichelman
2013-08-05 19:09:34 UTC
view on stackexchange narkive permalink

In definitiva sei l'unico che può effettuare quella valutazione del rischio. Se dormirai meglio offuscando il tuo codice, fallo.

Personalmente non mi preoccuperei. I servizi di web hosting affidabili sono nel business del web hosting non nel business del furto del codice sorgente. Se rubano il tuo codice, dovrebbero comunque installarlo, vendere il servizio, trovare clienti e combattere la causa che intendi presentare contro di loro. È uno sforzo eccessivo per loro con troppi rischi per una ricompensa insufficiente.

AJ Henderson
2013-08-05 20:00:36 UTC
view on stackexchange narkive permalink

L'offuscamento è inefficace contro un aggressore determinato, lo rende solo leggermente più difficile. Se hai un motivo particolare per diffidare del tuo provider di hosting, prendine un altro.

Se vuoi solo essere al sicuro, ottieni un accordo di non divulgazione e altre garanzie legali che ti consentano di inseguire il tuo host se abusa delle cose.

Se ancora non ti fidi di loro anche con quelle assicurazioni legali, procurati server dedicati che puoi controllare e crittografare in modo tale che il provider di hosting non possa accedere ai dati a meno che non si intrometta nel server operativo.

Se sei preoccupato che qualcuno abbia accesso fisico ai tuoi server, configura il tuo data center o bloccalo fisicamente in un recinto in una struttura collocata con monitoraggio della proprietà fisica.

Il semplice utilizzo di un NDA dovrebbe essere sufficiente con qualsiasi provider di hosting affidabile.

Bill
2013-08-05 20:23:34 UTC
view on stackexchange narkive permalink

Non mi preoccuperei.

Due ragioni:

I linguaggi interpretati a runtime non possono essere protetti completamente in questo modo. Per offuscarlo completamente dovresti offuscarlo anche dal runtime, quindi non ci sarebbe modo di eseguirlo. L'offuscamento rende il compito leggermente più fastidioso. Può anche rendere il debug e la distribuzione più dispendiosi in termini di tempo per il tuo personale.

Pochissime applicazioni contengono davvero il tipo di codice segreto per la salsa che le persone si farebbero davvero così tanto per rubare. È molto più semplice ottenere un elenco di funzionalità e alcuni appaltatori e dire "crea qualcosa di simile" piuttosto che copiare funzione per funzione con le applicazioni più comuni.

tylerl
2013-08-06 06:58:05 UTC
view on stackexchange narkive permalink

Dovresti prendere precauzioni per proteggerti, ma non per i motivi o dalla minaccia che stai immaginando.

Prima di tutto, se non puoi fidarti del tuo provider di hosting, ottieni un nuovo provider di hosting . Non c'è bisogno di aggiungere altro al riguardo.

Secondo, anche se pensi che la proprietà intellettuale nell'applicazione web che hai creato sia preziosa, è probabile che tu sia il solo uno. Ruberesti il ​​sito web del tuo concorrente? Probabilmente no; non ne varrebbe la pena. Di norma, le persone non sono interessate a rubare il tuo sito. In genere il costo della personalizzazione del sito di qualcun altro per adattarlo alle tue esigenze si avvicina o supera il costo della sua creazione.

Infine, dovresti preoccuparti che gli aggressori recuperino il tuo codice e lo utilizzino per attaccarti. Password salvate, database degli utenti, errori di programmazione e vulnerabilità: il tuo codice probabilmente rappresenta un succoso bersaglio per gli aggressori dannosi . Ciò è particolarmente vero se il tuo codice è scritto male o il tuo servizio è popolare.

Offuscare il tuo codice non è una soluzione e non sarebbe di aiuto comunque. Ma buone pratiche di sicurezza, incluso il rispetto del principio del privilegio minimo, dovrebbero aiutarti. Separare il tuo accesso in modo che compromettere un sistema o un componente non dia al tuo aggressore l'intera app in un piccolo pacchetto pulito. Più gli elementi della tua attività sono indipendenti e scollegati, meno un utente malintenzionato può impigliarsi in una sola volta.

Cyril Joudieh
2013-08-06 12:42:17 UTC
view on stackexchange narkive permalink

Ho molte applicazioni web ospitate online. Alcuni codici sono preziosi, sì. Tuttavia, non ho offuscato nulla poiché anche se viene rubato, nessun altro può mantenerlo. Alla fine si tireranno fuori i capelli. L'ho provato con qualcuno che voleva disperatamente il mio software. Non poteva installarlo, capirlo né ricavarne nulla, quindi come sarebbe in grado di trovare clienti e venderlo come menzionato sopra.

Il valore è nei dati e nel supporto che dai e mantenere il cliente felice.

Tutte le mie applicazioni desktop potrebbero essere decompilate in un modo o nell'altro. Penso che VB6 fosse l'unico che non poteva essere decompilato. Nessuno può mantenerli perché utilizzo codici complicati e nomi di variabili complicati.

user10211
2013-08-05 19:22:51 UTC
view on stackexchange narkive permalink

Non c'è alcun merito di sicurezza nel tentativo di offuscare qualsiasi codice lato client. Un utente malintenzionato abbastanza determinato aggirerà qualsiasi metodo di offuscamento che gli lanci.

Se il codice è davvero importante, tienilo dal lato degli affari. Considera qualsiasi codice lato client pubblico e disponibile a chiunque e a tutti.

sì, sto parlando solo del codice lato server ..
@user01 Se è codice lato server, perché sei preoccupato che le persone lo rubino? Se non ti fidi del tuo host web, trovane un altro.
non conosci completamente alcun host web finché non ti ha fatto del male.
Philipp
2013-08-05 20:28:14 UTC
view on stackexchange narkive permalink

Quando non ti fidi del tuo hoster per non rubare i tuoi dati, dovresti cercarne uno più affidabile o ospitarti da solo.

Non stai solo affidando loro il codice del tuo programma, ma anche affidato tutti i tuoi dati e i dati di tutti i tuoi utenti. Quando presumi che il tuo hoster sia abbastanza dannoso da rubare la tua programmazione, sono anche abbastanza dannosi da rubare i tuoi dati utente e venderli al miglior offerente. Dati che probabilmente hai promesso di proteggere in base a una politica sulla privacy.

Quando arrivi alla conclusione che non ti fidi di alcun hoster ma che l'hosting è troppo costoso, hai la possibilità di acquistare il tuo server fisico e lascia che qualcun altro lo ospiti, ma 1. crittografa completamente il suo filesystem in modo che non possano clonare i dischi rigidi durante la manutenzione e 2. assicurati che tutte le comunicazioni di rete siano crittografate in modo che non possano fiutare il traffico.

Daniël W. Crompton
2013-08-06 05:36:40 UTC
view on stackexchange narkive permalink

Il mondo è sottosopra, il valore reale di solito non è nel codice dell'applicazione. È nei dati del cliente che il codice viene utilizzato per raccogliere / modificare. In molte applicazioni web il codice è protetto e i dati sono spesso in chiaro senza alcuna semplice protezione. Questo è uno dei problemi che PCI DSS, HIPAA e altri standard di sicurezza dei dati dovrebbero affrontare.

Partendo dal presupposto che il tuo provider di hosting sia dannoso, l'accesso ai dati dei clienti distruggerà la tua azienda molto più rapidamente che ottenere il tuo codice.

Oltre al problema della sicurezza attraverso l'oscurità, l'offuscamento del codice può anche introdurre problemi di sicurezza e dovrà essere controllato allo stesso livello o ad un livello superiore del tuo normale codice di base.

F. Hauri
2013-08-06 21:49:10 UTC
view on stackexchange narkive permalink

No.

Chiaramente: hai intenzione di investire tempo nella cosiddetta tecnologia sicurezza attraverso l'oscurità .

Non è una buona idea!

Per proteggere la tua idea da licenze di terze parti, potresti pubblicarle con una licenza pubblica come GNU GPL, creative commons o altri.

Volevo sollevare anche questo punto, e mettere una vignetta su [_Schlock Mercenary_] (http://www.schlockmercenary.com) nella mia risposta. Sfortunatamente, non riesco a trovare la striscia su di esso.
Ravi Chandran
2013-08-06 14:30:50 UTC
view on stackexchange narkive permalink

L'offuscamento non nasconde o cambia mai il tuo codice, lo modifica semplicemente in un altro formato in cui può elaborarlo,

Es: se vuoi offuscare il nome della tua classe MyHomePage deve essere cambiato in M4Page Allo stesso modo un metodo di addWidgets () verrà nominato in un altro, e potrebbe anche essere cambiato il nome della funzione, non la Funzionalità Quindi se desidero chiamare il metodo dal tuo codice offuscato posso facilmente implementarlo ...

CyberSkull
2013-08-07 12:39:37 UTC
view on stackexchange narkive permalink

Non puoi offuscare il codice o i dati a sufficienza per renderli sicuri. Se tu fossi in grado di farlo, il tuo codice e i tuoi dati sarebbero inutilizzabili anche per te.

La sicurezza tramite l'oscurità funziona solo fintanto che il segreto del tuo offuscamento rimane intatto. I segreti non restano mai segreti. Questa è la base per la maggior parte dei sistemi di diritti digitali e fino ad oggi tutti sono stati violati.

Su una nota più tecnica, se stai usando un linguaggio interpretato (Perl, PHP) o un bytecode interpretato linguaggio (Java), considera l'utilizzo degli strumenti di compilazione nativi inclusi per loro. Molti di questi linguaggi di alto livello includono uno strumento per produrre una versione C / C ++ dei tuoi script o compilare in modo nativo per il tuo hardware. Avere una versione compilata in modo nativo elimina la necessità di mantenere l'albero dei sorgenti sui server remoti e fornisce anche un significativo aumento delle prestazioni.

La maggior parte di questi strumenti fornisce effettivamente una VM un po 'ridotta con bytecode / albero incorporato del tuo script, non un binario completamente nativo.Quindi possono essere facilmente decompilati in una forma molto più leggibile rispetto al semplice assembly, quindi non è davvero una buona soluzione per offuscare qualcosa.Per lo stesso motivo, in realtà non forniscono un aumento della velocità da nessuna parte tranne l'avvio.
John The Ripper
2013-08-07 19:23:00 UTC
view on stackexchange narkive permalink

La sicurezza tramite l'oscurità non è male se non è solo una cosa su cui fai affidamento. L'utilizzo dell'offuscamento per proteggere il codice non funzionerà, ma l'utilizzo dell'offuscamento con altre licenze non è male.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...