Quali sono gli aspetti positivi e negativi del caricamento di un file eseguibile e del caricamento nel back-end?

1

Sto sviluppando un'applicazione web, attualmente l'applicazione è in fase di sviluppo sia in NodeJ che in ASP Net. Stiamo strutturando l'applicazione nei micro-servizi. Diciamo che abbiamo un servizio che chiama alcune funzioni in una DLL e abbiamo la possibilità di scegliere da quale DLL chiamare le funzioni, ma il client vuole renderlo dinamico, in modo che possa caricare un file .dll nel front-end e quindi l'applicazione deve trasferirla in una directory che il microserver esegue la scansione e aggiungere quella nuova .dll alla lista di dll di cui possiamo usare, le DLL hanno la stessa interfaccia, quindi l'unica cosa che cambiamo è la dll che scegliamo .

Ho qualche dubbio sul fatto che questa sia una buona idea per quanto riguarda la sicurezza e alcuni problemi di implementazione come il tempo di inattività.

In particolare, il micro servizio è il centro dell'applicazione e le funzioni che vengono eseguite impiegano diversi secondi o addirittura minuti per essere completate, quindi implementeremo un programmatore di attività che riceve una nuova attività da un utente specifico, quindi esegue la funzione data dalla DLL e restituisce il risultato.

    
posta Joel Lara 29.05.2018 - 21:17
fonte

2 risposte

4

Questa non è affatto una buona idea. L'intero punto della sicurezza del software è prevenire l'esecuzione arbitraria del codice.

Permettere a qualcuno di caricare un codice arbitrario che viene eseguito è ovviamente e inevitabilmente contrario a quello. Vuoi che i tuoi servizi ospitano il kiddie porn? Hacking sistemi governativi? Rubare tutte le carte di credito che si avvicinano al tuo sistema?

Quanto veramente ti fidi di quel client?

    
risposta data 29.05.2018 - 21:58
fonte
2

Può essere una buona idea. Non è questo essenzialmente ciò che stanno facendo i provider di cloud come AWS, Azure e GCE?

Tuttavia, penso che quei ragazzi contengano strettamente il codice eseguibile, probabilmente molto più stretto di quanto potresti.

Se il cliente indica la persona che paga il progetto e possiede i computer server e controlla gli utenti (ad esempio, gli utenti sono dipendenti) è probabilmente ancora una pessima idea, ma è il loro denaro quindi perché non dare loro quello che vogliono.

Nella maggior parte delle altre situazioni, come ad esempio che possiedi i server e non puoi garantire che il codice eseguibile sia strettamente contenuto, ti consiglio di rifiutare categoricamente la richiesta.

SUGGERIMENTO: se stai facendo domande come questa sullo stack exchange, non puoi garantire che il codice eseguibile sia strettamente contenuto.

    
risposta data 29.05.2018 - 21:47
fonte

Leggi altre domande sui tag