¿Cuál es la mejor manera de cargar un archivo de forma segura?
Mi cliente es una aplicación de escritorio .NET y el servidor es Apache Tomcat que ejecuta archivos JSP y se ejecuta en un sistema operativo Linux.
¿Cuál es la mejor manera de cargar un archivo de forma segura?
Mi cliente es una aplicación de escritorio .NET y el servidor es Apache Tomcat que ejecuta archivos JSP y se ejecuta en un sistema operativo Linux.
Normalmente, puede cargar el archivo utilizando el método HTTPS estándar, sin embargo, la exposición del servidor de aplicaciones para las cargas es siempre muy arriesgada. Especialmente si el servidor de aplicaciones tiene muchas bibliotecas integradas y así sucesivamente. Así que idealmente:
Además de eso, puedes cifrar el archivo en sí. Si se trata de una aplicación .NET, podría ser una clave simétrica precompartida dedicada (por instancia, por ejemplo, por cliente) que no se almacena en el servidor de destino, por lo que el archivo se copia de la instancia de Tomcat de carga a otra instancia aislada donde es descifrado Con respecto a las claves previamente compartidas, no es la mejor manera, por lo que puede usar otra instancia de Tomcat como Servidor de claves. Ya con el certificado del cliente, puede conectarse a la instancia clave de Tomcat y solicitar una clave simétrica de un solo uso, y la instancia de descifrado de Tomcat volverá a solicitar esta clave durante el descifrado.
Puede omitir el servidor de carga adicional si confía en su Tomcat principal. Sin embargo, el uso de HTTPS y el Servidor de claves con cifrado es realmente recomendable si la carga debe ser segura. Además, el archivo almacenado puede permanecer encriptado y es posible que el servidor Tomcat principal no necesite / no pueda consultar el servidor de claves en absoluto.
De esta manera, si su servidor de carga se ve comprometido, los archivos son ilegibles. Si su servidor de claves se ve comprometido, los archivos tampoco son legibles. Reducir la superficie de ataque es lo principal. Utilice el alojamiento de Tomcat barato para lograr eso. Utilice JRE8 con G1GC para reducir el uso de memoria. Use secuencias y no cargue archivos en la RAM.
Lea otras preguntas en las etiquetas web-application linux file-upload