Qual è il modo migliore per caricare un file in modo sicuro?
Il mio client è un'applicazione .NET Desktop e il server è Apache Tomcat che esegue file JSP, in esecuzione su un sistema operativo Linux.
Qual è il modo migliore per caricare un file in modo sicuro?
Il mio client è un'applicazione .NET Desktop e il server è Apache Tomcat che esegue file JSP, in esecuzione su un sistema operativo Linux.
In genere puoi caricare il file utilizzando la modalità standard HTTPS, tuttavia, esporre il server delle applicazioni per i caricamenti è sempre molto rischioso. Soprattutto se il server delle applicazioni ha un sacco di librerie integrate e così via. Quindi idealmente:
Inoltre, puoi crittografare il file stesso. Se si tratta di un'applicazione .NET, potrebbe essere dedicata (per ogni istanza, ad esempio per cliente) una chiave simmetrica pre-condivisa che non è memorizzata sul server di destinazione, quindi il file viene copiato dall'istanza Tomcat di upload in un'altra istanza isolata dove è decodificato. Per quanto riguarda le chiavi pre-condivise, non è il modo migliore, quindi puoi utilizzare un'altra istanza di Tomcat come Key Server. Avendo già il certificato client, puoi connetterti a Key Tomcat Instance e richiedere una chiave simmetrica monouso e la decrittografia Tomcat Instance richiederà nuovamente questa chiave durante la decrittografia.
Puoi ignorare il server di upload aggiuntivo se ti fidi del tuo Tomcat principale. Tuttavia, l'utilizzo di HTTPS e Key Server con crittografia è davvero consigliato se il caricamento deve essere sicuro. Inoltre, il file memorizzato potrebbe rimanere crittografato e il server Tomcat principale potrebbe non aver bisogno / essere in grado di interrogare il Key Server.
In questo modo, se il tuo server di upload viene compromesso, i file non sono leggibili. Se il server delle chiavi viene compromesso, anche i file non sono leggibili. Ridurre la superficie di attacco è la cosa principale. Usa l'hosting Tomcat a buon mercato per raggiungere questo obiettivo. Usa JRE8 con G1GC per ridurre l'utilizzo della memoria. Utilizza gli stream e non caricare i file nella RAM.
Leggi altre domande sui tag linux web-application file-upload