Estoy escribiendo una aplicación web que permite cargar software en mi servidor para que otros usuarios la descarguen (alojamiento de archivos). ¿Cómo puedo verificar que un programa no es dañino antes de cargarlo en mi servidor?
Estoy escribiendo una aplicación web que permite cargar software en mi servidor para que otros usuarios la descarguen (alojamiento de archivos). ¿Cómo puedo verificar que un programa no es dañino antes de cargarlo en mi servidor?
En el caso general, esto es imposible.
Hay un resultado de la ciencia de la computación teórica denominado "Detener el problema" . Indica que nunca puede escribir un programa que, para cualquier otro programa, pueda probar si terminará.
Ahora, si ni siquiera puedes probar que un programa aleatorio terminará, ciertamente no puedes probar que es inofensivo.
La única forma de hacerlo es asegurarse de que los programas cargados estén muy limitados en lo que pueden hacer. Probablemente limitado más allá del punto en el que son útiles.
Puede agregar controles de virus a su servicio (como también se sugiere en la respuesta de thel3l y comentario de schroeder ). He visto que más servicios de hosting hacen esto, y al menos protegerá un poco a los usuarios que descargan.
Sin embargo, siempre estarás en la carrera de armamentos entre los creadores de malware y los analizadores de virus. No puede garantizar a sus usuarios que el software alojado es seguro. Sin embargo, puedes mantener fuera algunas manzanas malas, y con suerte, la mayoría de las manzanas malas.
Esto se puede hacer de dos maneras:
Caja de arena. Entra en el sandbox de todo, siempre ejecuta el código solo dentro de uno y nunca afuera.
No ejecute el código : probablemente sea más fácil. Solo asegúrese de que su analizador nunca cargue todo el código en la memoria y lo ejecute durante la carga.
Comprimir. Esto evita que el código se ejecute durante y después de la carga. Recomendado con una caja de arena.
Además, es posible que desee considerar colocar su código que se está cargando en un sitio de almacenamiento externo para ayudar a evitar un compromiso total si alguien logra ejecutar el código.
Y como dijo @iain, puede considerar analizar todos los archivos entrantes en busca de virus conocidos.
Lea otras preguntas en las etiquetas web-application file-upload