.Net Dinamica Plugin di Carico con Autorità
-
08-06-2019 - |
Domanda
Quali consigli può dare per un sistema che deve effettuare le seguenti operazioni:
Caricare i Plugins (ed eventualmente eseguire di loro), ma sono 2 metodi di caricamento di questi plugin:
- Caricare solo autorizzato plugin (sviluppato dal proprietario del software)
- Carico di tutti i plugin
E abbiamo bisogno di essere ragionevolmente sicuro che i titolari del plugin sono il vero affare (non modificato).Tuttavia tutti i plugin devono essere in separate assemblee.Ho cercato l'uso di potenti assembly con nome sicuro per i plug-in, con la chiave pubblica memorizzati nel caricatore applicazione, ma a me questo sembra un modo troppo facile per modificare la chiave pubblica all'interno del caricatore di applicazione (se l'utente è stato così inclinato), a prescindere da qualsiasi offuscamento del caricatore di applicazione.Più sicuro di idee?
Soluzione
Fondamentalmente, se stai inserendo il tuo codice sulla macchina di qualcun altro, non c'è alcuna garanzia assoluta di sicurezza.
Puoi guardare tutti i tipi di trucchi per la sicurezza, ma alla fine il codice è sulla loro macchina, quindi è fuori dal tuo controllo.
Quanto perdi se l'utente finale carica un plugin non autorizzato?
Altri suggerimenti
Quanto perdi se l'utente finale carica un plugin non autorizzato?
È vero che ciò non accadrà spesso, ma quando / se succede perdiamo molto e anche se capisco che non produrremo nulla di sicuro al 100%, voglio renderlo abbastanza difficile da scoraggiare le persone dal farlo .
La cosa fastidiosa di andare con un semplice caricamento dinamico con un nome sicuro, è che tutto ciò che serve è una semplice modifica letterale di stringa all'interno dell'app loader per caricare qualsiasi altro assembly anche se i plug-in sono firmati.
puoi ampliare la tua domanda: " come posso proteggere i miei assiemi .net dal reverse engineering? "
la risposta è: non puoi. per coloro che non l'hanno ancora visto, basta cercare "riflettore" ed eseguirlo su qualche ex ingenuo.
(a proposito, questa è sempre la risposta per il codice che è fuori dalle tue mani, purché tu non abbia un hardware en / decryption inviato con esso),
l'offuscamento cerca di rendere il reverse engineering più difficile (costa più denaro) dello sviluppo, e per alcuni tipi di algoritmi ha successo.
Firma gli assiemi.
Firma con nome sicuro o denominazione sicura, fornisce un componente software a livello globale identità unica che non può essere falsificata da qualcun altro. Vengono usati nomi forti per garantire quel componente dipendenze e configurazione le istruzioni vengono mappate esattamente a destra componente e versione del componente.
http://msdn.microsoft.com/ it-it / library / h4fa028b (VS.80) aspx