Como diseñador web (no experto en seguridad) me pregunto: si permito a los usuarios cargar contenido en mi sitio web (videos, imágenes y archivos de texto), ¿cuáles son los riesgos reales?
Hay un par de riesgos al permitir que el contenido se cargue en su sitio, pero la importancia que tengan para usted dependerá de cómo funcionará exactamente el sitio que está diseñando.
Primero se carga el malware. Si un atacante puede cargar malware en su sitio y los usuarios descargan y ejecutan el malware, es probable que sea un problema. La prevención de esto generalmente se basa en una combinación de restricción de los tipos de archivos que se pueden cargar (un punto a tener en cuenta es que no debe confiar solo en la extensión de archivo aquí) y en el uso de escaneo de malware en el contenido cargado. Por supuesto, el lado de escaneo de las cosas solo detendrá las firmas conocidas y se puede omitir con bastante facilidad.
El segundo problema potencial es si pueden cargar contenido activo y hacer que lo ejecute su aplicación. Por ejemplo, si su sitio utiliza php, si pueden cargar un script php y luego ejecutarlo como parte de su aplicación, es probable que puedan tomar el control del servidor, o al menos acceder a otra información existente. en la aplicación.
Un enfoque que he visto para abordar esto es garantizar que los archivos cargados no se coloquen en la raíz web y garantizar que el servidor web no ejecutará archivos desde esa ubicación.
Un tercer riesgo, es que los usuarios suban material "ilegal". Esta puede ser una pregunta legal difícil de ordenar, pero si permite el contenido generado por el usuario, es probable que tenga que lidiar con él tarde o temprano. La solución para esto parece ser principalmente de procedimiento. Tenga una buena relación con su empresa de alojamiento y su ISP y asegúrese de que puede responder a las solicitudes para eliminar el contenido rápidamente, si está alojando en una jurisdicción que requiere que se elimine el contenido si llega una solicitud (por ejemplo, una solicitud de DMCA) ).
Si su servidor no está bien configurado, podría llevar a la ejecución de código malicioso en el contexto de su servidor y tomar control de sus archivos. Un ejemplo de esto es el conocido backdoor PHP c99shell . Hay algunas recomendaciones para hacer esta característica más segura:
FileInclude es uno de los peores agujeros de seguridad en los sitios web, solo piensa en lo que sucederá si alguien usa C99 Shell (que es uno de los peores scripts de PHP que he visto) en tu sitio y ejecútalo.
Un atacante puede cargar códigos maliciosos que pueden interrumpir la autenticación o cargar un archivo .exe. Tales archivos cuando son abiertos por el otro usuario pueden causar problemas de seguridad importantes y causar el rendimiento del sistema.
Desde el punto de vista de la seguridad: permitir que el usuario cargue cualquier tipo de archivo ejecutable sin una evaluación adecuada es un gran riesgo. La regla de oro será:
He visto algún sitio que intenta no permitir que se cargue el script PHP y que permite que el SSI se cargue y se ejecute.
Lea otras preguntas en las etiquetas web-application appsec file-upload