usuario una tener subir por plugin para otro link enviar descargar cuenta crear compartir compartida como carpeta archivos archivo abrir security iis asp-classic iis-6 windows-server-2003

security - tener - ¿Cómo aseguro una carpeta utilizada para permitir a los usuarios subir archivos?



dropbox (4)

Tengo una carpeta en mi servidor web utilizada para que los usuarios carguen fotos usando una página ASP.

¿Es lo suficientemente seguro para dar permisos de escritura IUSR a la carpeta? ¿Debo asegurar algo más? Tengo miedo de que los piratas informáticos omitan la página ASP y carguen contenido directamente en la carpeta.

Estoy usando ASP classic e IIS6 en Windows 2003 Server. La carga se realiza a través de HTTP, no de FTP.

Editar: cambiar la pregunta para mayor claridad y cambiar mis respuestas como comentarios.


¿Cómo cargará el usuario las fotos? Si está escribiendo una página ASP para aceptar los archivos cargados, solo el usuario que ejecuta IIS necesitará permiso de escritura para la carpeta, ya que IIS realizará la E / S de archivo. Su página ASP debería verificar el tamaño del archivo y tener algún tipo de autenticación para evitar que los hackers llenen su disco duro.

Si está configurando un servidor FTP u otro método de transferencia de archivos, la respuesta será específica para el método que elija.


Además, recomendaría no permitir que los usuarios suban a una carpeta a la que se pueda acceder desde la web. Incluso la mejor detección del tipo MIME puede fallar y no desea que los usuarios carguen, por ejemplo, un ejecutable disfrazado como un jpeg en el caso de que su rastreo MIME falle, pero el que está en IIS funciona correctamente.

En el mundo PHP, es aún peor, porque un atacante podría cargar un script PHP malicioso y luego acceder a él a través del servidor web.

Siempre, siempre almacene los archivos cargados en un directorio en algún lugar fuera de la raíz del documento y acceda a ellos a través de alguna secuencia de comandos que acceda, lo que desinfectará adicionalmente (y al menos establecerá explícitamente una imagen / cualquier tipo de tipo MIME.


Deberá otorgar permisos de escritura, pero puede verificar el tipo de mímica del archivo para garantizar una imagen. Puede usar FSO como tal:

set fs=Server.CreateObject("Scripting.FileSystemObject") set f=fs.GetFile("upload.jpg") ''image mime types or image/jpeg or image/gif, so just check to see if "image" is instr if instr(f.type, "image") = 0 then f.delete end if set f=nothing set fs=nothing

Además, la mayoría de los objetos COM que se cargan tienen una propiedad de tipo que puede consultar antes de escribir el archivo.


Lo mejor para ti es probablemente utilizar un componente de carga (he usado ASPUpload) que te permite cargar / descargar archivos de una carpeta a la que no se puede acceder desde el sitio web.

Obtendrá algunos enganches de autenticación y no tendrá que preocuparse de que alguien navegue por la carpeta y descargue los archivos (o cargue en su caso), ya que los archivos solo están disponibles a través del componente.