Qual è il modo migliore per caricare un file in modo sicuro? [chiuso]

1

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.

    
posta Sheldon Cooper 18.07.2016 - 16:53
fonte

1 risposta

1

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:

  • Crea un'istanza Tomcat dedicata solo per i caricamenti di file con un set minimo di librerie
  • Abilita HTTPS su di esso e disabilita HTTP, consolida le impostazioni HTTPS in modo che utilizzi solo le ultime versioni di protocollo
  • Crea un certificato utente che viene utilizzato per autorizzare l'utente a connettersi al server
  • Crea il nome utente e la password per ciascun utente
  • Ora puoi caricare tramite HTTPS per il controller di tomcat qualsiasi file, puoi farlo usando il formato binario per non consumare troppa larghezza di banda
  • Se disponi di più dell'infrastruttura, puoi utilizzare HTTPS - > Proxy HTTP, ad es. in AWS, questo semplifica le cose

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.

Vedi lo schema:

    
risposta data 18.07.2016 - 17:26
fonte

Leggi altre domande sui tag