it-swarm-es.com

¿Cuáles son los riesgos de seguridad de permitir que los usuarios carguen contenido en mi sitio?

Como diseñador web (no experto en seguridad), me pregunto: si permito que los usuarios carguen contenido en mi sitio web (videos, imágenes y archivos de texto), ¿cuáles son los riesgos reales involucrados?

32
Edgar

Hay un par de riesgos al permitir que el contenido se cargue en su sitio, pero lo importante que sean para usted dependerá exactamente de cómo funcionará el sitio que está diseñando.

Primero está la carga de malware. Si un atacante puede cargar malware en su sitio y sus usuarios descargan y ejecutan ese malware, es probable que sea un problema. La prevención de esto generalmente se basa en una combinación de restringir los tipos de archivos que se pueden cargar (un punto a tener en cuenta es que no solo debe confiar en la extensión del archivo aquí) y usar el 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 que su aplicación lo ejecute. Entonces, por ejemplo, si su sitio usa 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 que exista 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 ejecute archivos desde esa ubicación.

Un tercer riesgo es que los usuarios suban material "ilegal". Esta puede ser una pregunta legal difícil de resolver, 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 de eliminación de contenido rápidamente, si está alojado en una jurisdicción que requiere que se elimine el contenido si llega una solicitud (por ejemplo, una solicitud de DMCA ).

27
Rory McCune

Si su servidor no está bien configurado, podría provocar la ejecución de código malicioso en el contexto de su servidor y tomar el control de sus archivos. Un ejemplo de eso es bien conocido PHP puerta trasera c99Shell. Hay algunas recomendaciones para hacer esta característica más segura:

  1. Use algún otro dominio (o subdominio) para almacenar archivos cargados por los usuarios
  2. Asegúrese de que los usuarios no puedan cargar ningún tipo de archivo que el servidor ejecutará (verifique el tipo de contenido o use herramientas específicas del idioma para leer el contenido del archivo y verifique el tipo mime correcto)
  3. Asegúrese de que los archivos cargados no tengan permisos para ejecutarse.
  4. Al permitir que otros usuarios descarguen el archivo, a veces es útil forzarlo como archivo adjunto utilizando el encabezado HTTP Content-Disposition
9
bretik

FileInclude es uno de los peores agujeros de seguridad en los sitios web, solo piense qué sucederá si alguien carga C99 Shell (que es uno de los peores scripts de php que he visto) en su sitio y lo ejecuta.

1
Mohamad Alhamoud

Un atacante puede cargar códigos maliciosos que pueden romper la autenticación o cargar un archivo .exe. Dichos archivos cuando son abiertos por el otro usuario pueden causar problemas de seguridad importantes y el rendimiento del sistema.

0
Irfan

Desde el punto de vista del soporte de seguridad, es un gran riesgo permitir que el usuario cargue cualquier tipo de ejecutable sin la detección adecuada.

  • No coloque el contenido cargado por el usuario en una ubicación accesible para el usuario en el directorio web.
  • No permita que el usuario cargue archivos de configuración del servidor. (En algunos casos, el usuario restringirá la carga de archivos php pero aún permitirá que se cargue .htaccess :))

He visto algún sitio tratando de no permitir PHP carga de script mientras que felizmente permite cargar y ejecutar SSI.

0
kiran