Los sistemas operativos generalmente tienen un número limitado de archivos que pueden abrir a la vez (específicamente, un número limitado de descriptores de archivos o fd
s en sistemas similares a Unix, o HANDLE
s en Windows). Si permite que las personas abran un número arbitrario de personas sin cerrarlas, entonces podría ser posible agotar ese límite, lo que evitaría que el sistema operativo abra más archivos y probablemente cause un mal funcionamiento o incluso una falla. Sin embargo, sería difícil explotarlo por algo más que la denegación de servicio. Además, los programas pueden tener cuotas (por debajo del límite del sistema) de cuántos archivos pueden abrir, por lo que un solo programa de comportamiento incorrecto no puede hacer demasiado, y todos los archivos de un proceso se publican cuando el proceso termina, por lo que normalmente es fácil suficiente para restaurar la función (de hecho, la mayoría de los programas se bloquearían en poco tiempo).
Sin embargo, si está permitiendo que la gente le diga a su servidor que abra un archivo, sería una buena idea tener un límite de cuántos se pueden abrir a la vez y cerrar el archivo (automáticamente, si el usuario no lo hace). t Indíquele que suceda primero) en el menor tiempo posible.
Otro riesgo podría ser abrir conexiones de red, dependiendo de qué sistema operativo esté ejecutando y qué tipos de ruta acepta. Por ejemplo, si el sistema acepta rutas de estilo de red de Windows ( \server\share\path\to\file
) o SMB (el protocolo de red de Windows, implementado en Unix-like en el kit de herramientas de Samba) rutas ( smb://server/share/path
), u otras formas de acceder a cualquier tipo de red El sistema de archivos que aún no está montado (o "asignado" para usar el antiguo término de Windows) al sistema de archivos local, podría causar que su servidor abra una conexión de red a la caja de un atacante y posiblemente intente autenticar. Esto podría revelar información sobre el servidor y podría proporcionar un vector para que los atacantes intenten comprometer el servidor a través de respuestas maliciosas.
Por lo tanto, también debes restringir los nombres de los archivos a cosas en las que puedas estar seguro de que no son rutas remotas. En general, probablemente debería evitar dejar que se especifiquen las rutas; solo permite nombres de archivos solamente. Sin embargo, esos son los únicos dos riesgos en los que puedo pensar. De lo contrario, es bastante seguro.