sistema significa recursivo que por fecha ejemplos comando buscar archivos validation unix file

validation - recursivo - que significa en linux



¿Qué personajes deberían restringirse desde un nombre de archivo Unix? (7)

Considere un cuadro de diálogo Guardar como con una entrada de texto libre donde el usuario ingresa un nombre de archivo como texto libre, luego hace clic en un botón Guardar . El software luego valida el nombre del archivo y guarda el archivo si el nombre es válido.

En un sistema de archivos Unix, qué reglas deberían aplicarse en la validación de modo que:

  • El nombre no será difícil de manipular más tarde en términos de escapar de caracteres especiales, etc.
  • Las reglas no son tan restrictivas que guardar un archivo no sea fácil de usar.

Entonces, básicamente, ¿cuál es el conjunto mínimo de caracteres que deberían restringirse desde un nombre de archivo Unix?


Encode FTW

Como Bombe señala en su respuesta, restringir la entrada del usuario es al menos frustrante, si no francamente molesto. Sin embargo, como desarrolladores, debemos asumir que cada interacción con nuestro código es maliciosa y los tratamos como tales.

Para resolver ambos problemas en una aplicación práctica, en lugar de incluir ciertos caracteres en blanco o negro, simplemente no deberíamos utilizar la entrada del usuario como nombre de archivo.

En su lugar, utilice un nombre seguro (caracteres hexadecimales [a-f0-9] solo para la seguridad máxima) de nuestro propio diseño, codificado a partir de la entrada del usuario (por ejemplo , bin2hex de PHP ) o un ID generado aleatoriamente (por ejemplo , uniqid de PHP ) luego mapeado por algún método (elegir) a la entrada del usuario.

La codificación / decodificación se puede hacer sobre la marcha sin depender del mapeo, por lo que es prácticamente ideal. El usuario nunca necesita saber cómo se llama realmente el archivo; siempre que puedan obtener / configurar el archivo, y parece que se llama lo que querían, todos ganan.

Con esta metodología, el usuario puede llamar a su archivo como lo desee, los hackers serán las únicas personas frustradas, y su sistema de archivos lo adorará :-)


A menudo olvidado: los dos puntos (:) no son una buena idea, ya que se usan comúnmente en cosas como $ PATH, es decir, la lista de directorios donde los ejecutables se encuentran "automáticamente". Esto puede causar confusión con los nombres de directorio de DOS / Windows, donde, por supuesto, se usan los dos puntos en los nombres de las unidades.


Aunque la respuesta aceptada podría ser cierta, creo que hay un beneficio de tener algunas restricciones que podrían ser potencialmente molestas para las secuencias de comandos u otras cosas:

  • barra inclinada (/)
  • barra invertida (/)
  • NULL (/ 0)
  • tick (`)
  • comienza con un guion (-)
  • estrella (*)
  • tubos (|)
  • punto y coma (;)
  • citas ("o")
  • colon (:)

(- tal vez el espacio, aunque soy reacio a agregar eso.)

Como puede ver, quizás sea mejor que esté en la lista blanca como @Gavin sugiere ...


Deja que el usuario ingrese el nombre que quiera. La restricción artificial de la gama de caracteres solo molestará a los usuarios y no servirá para nada.


El mínimo son barras (''/'') y NULL (''/ 0'')


En primer lugar, lo que describes es una lista negra . Su mejor opción es hacer una lista blanca de sus personajes, ya que es más fácil (desde la perspectiva del usuario) insertar caracteres en lugar de quitárselos.

En términos de lo que sería bueno en un entorno de Unix:

  • Arizona
  • Arizona
  • 0-9
  • guion bajo (_)
  • dash (-)
  • punto (.)

    Debería cubrir sus básicos. Los espacios pueden estar bien, pero dificultan las cosas. A los usuarios de Windows les encantan, unix / linux no. Entonces, dependiendo de su público objetivo, elija en consecuencia.


  • No olvide que puede agregar un punto ( . ) Al principio para ocultar archivos y carpetas ... De lo contrario, seguiría una convención de nombre * NIX (de Wikipedia):

    La mayoría de los sistemas de archivos UNIX

    • Manejo de casos: preservación de casos sensibles a mayúsculas y minúsculas
    • Conjunto de caracteres permitidos: cualquiera.
    • Caracteres reservados: / , null .
    • Longitud máxima: 255.
    • Notas: A leading. indica que ls y los administradores de archivos no mostrarán el archivo por defecto

    Enlace al artículo de wikipedia sobre nombres de archivos