2013-04-17 9 views
5

Ho un'applicazione ASP .NET che diamo ai nostri clienti per loro di installarlo nel loro server web e usarlo. La mia preoccupazione è che tutto il mio codice sorgente delle pagine ASPX sia aperto ei nostri clienti possano aprire il file ASPX/CS e vedere il codice al suo interno.È possibile incorporare limitazioni di prova nell'applicazione ASP.net?

Voglio proteggere il mio codice qualcosa come un'applicazione Windows implementando alcuni limiti di prova di 15-20 giorni. Inoltre, d'altra parte il codice sorgente deve avere alcune dll di terze parti in modo che ogni volta che provano a distribuire la nuova versione, sarà disponibile solo per un periodo limitato.

I termini di pagamento con il nostro cliente sono, First Source Code e quindi Payment. Quindi penso tra un po 'e l'altro che la fede da entrambe le parti rimanga così com'è. Come posso fare questo?

+2

La prossima volta, fornire l'applicazione in DLL compilate e quindi fornire il codice sorgente quando viene ricevuto il pagamento completo. –

+0

@RobertHarvey Compiled Dll è un altro aspetto.I file pubblicati sono già in esecuzione alla fine. Ora il progetto è quasi finito e per prima cosa hanno bisogno del codice sorgente, poi rilasciano il pagamento. –

+4

Se si sta dando loro il codice sorgente (anche prima di acquistarlo), cosa impedirebbe loro di disattivare la prova? Chiunque potrebbe semplicemente entrare nel codice sorgente e rimuovere il controllo. Certo, dovrebbero essere ricompilati, ma suona strano. – gunr2171

risposta

0

DotFuscator Community Edition è una possibilità, ma probabilmente è troppo di base per le vostre esigenze.

Ti suggerisco di guardare gli offuscatori commerciali sul mercato. Ecco una lista di alcuni che ho trovato con una semplice ricerca su Google. (Questo è non una raccomandazione di uno di questi strumenti.)

0

io suggerisco di controllare Reactor NET e IntelliLock. .NET Reactor impedirà la decompilazione del codice compilato, tuttavia con aspx non sono sicuro di come funzionerà, poiché dovrebbe essere precompilato. Intellilock fornirà la possibilità di impostare un tempo di scadenza. Ho usato entrambi con file eseguibili standard ma mai ASPX, quindi non sono sicuro che mi aiuteranno.

Link: http://www.eziriz.com/

2

pubblicare l'applicazione web in modo che tutto il codice dietro file vengono compilati in una DLL. In questo modo non possono vedere facilmente il tuo codice. Saranno comunque in grado di usare il reflection per vedere il codice usando strumenti come jetBrains dotPeeek.

opzione migliore ospitare il sito da soli ma come questo doesnt rispondere alla tua domanda qui ci sono alcune altre opzioni

1st Option

Se il cliente insiste sul che ospita il sito in cui sono concertate su possedere i dati quindi consentire loro di ospitare il sito e il database, ma inserire la funzionalità da un sito ospitato centralmente di cui si ha il controllo. Puoi persino fornire una API.

Fornisci al client un codice hash nel web.config e questo viene convalidato sul tuo sito. L'hash viene composto da:

  • presalt
  • l'indirizzo del servizio Web
  • la data di scadenza
  • cliente uniqueidentifier
  • qualsiasi altra informazione che si desidera
  • postsalt

Criptare la richiesta e la risposta del servizio web a d inviare tramite ssl.

L'hash del client verrà inviato nella richiesta. Costruisci un nuovo hash con gli stessi campi e convalida questo contro l'hash che hai ricevuto dal client. se non è valido non fornisci la funzionalità.

Google Maps richiede di registrarsi e ottenere un codice hash in quanto possono quindi interrompere l'utilizzo dell'API di Google Maps in caso di abuso.

seconda opzione

Un'altra opzione sarebbe quella di impostare un servizio di chiamata web a un sito che si ospita.

L'applicazione Web compilata distribuita crea quindi un hash utilizzando la risposta dal servizio Web e corrisponde all'hash generato con l'hash inviato nella risposta.

Ciò significa che se il client blocca il traffico verso il proprio servizio Web o tenta di falsificare la risposta, l'applicazione smetterà di funzionare.

Aggiungete inoltre un po 'di logica per avvertire se hanno provato a simulare la risposta. Questo ovviamente non funzionerà se bloccherà la chiamata al tuo servizio web.

Non si dovrebbero includere i sali qui poiché il client potrebbe leggerli se hanno decompilato il codice.

terza opzione Aggiungi due campi al web.config:

  • il codice hash che avete generato per il cliente
  • una data di scadenza.

Se il cliente modifica la data di scadenza per concedere loro più tempo, non verrà convalidato e verrà bloccato.

Opion 2 e 3 consentirebbero al client di decodificare l'hashcode se lo volessero.

=====================================

io in realtà non vedere la necessità, ma se vuoi puoi usare alcuni strumenti di obsfucation come menzionato nell'altro post per rendere più difficile per il client leggere il tuo codice. Ma anche se possono leggere il tuo codice, non dovrebbero essere in grado di creare un codice hash valido da soli.

+0

Si noti che in questo sistema non si interrompe fornendo un nuovo hash, lo si interrompe modificando il codice per rimuovere il controllo dall'hash. Non è particolarmente difficile. L'offuscamento del codice può renderlo un po 'più difficile, ma in questo caso il codice che deve essere modificato è abbastanza semplice da comprometterlo abbastanza facilmente. L'offuscamento del codice è più importante per garantire che l'intero progetto non possa essere efficacemente decodificato e quindi modificato in modo significativo. La piccola modifica di aspetti ristretti (in particolare solo disabilitandoli interamente) è molto più pratica. – Servy

+0

Se l'applicazione Web è compilata, il client dovrebbe creare una nuova applicazione e riflettere il codice e copiarlo interamente nella nuova applicazione. No, non vedo molti clienti che lo fanno. I – skyfoot

+0

Bene, non è necessario che ogni singolo client lo faccia, basta un client per farlo e quindi iniziare a ridistribuire il proprio prodotto per una frazione del prezzo (o gratuitamente). Se hai una piccola base di clienti che può essere un problema, ma man mano che cresce la base del cliente, è necessario aggiungere sempre più protezione poiché aumenta il valore del cracking del tuo programma. – Servy