Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

113
Vistas
Evitar la barra invertida en la creación de rutas en .NET para la implementación multiplataforma

Tengo una aplicación .NET heredada que he portado a .NET 6.0 y ejecuto multiplataforma (Windows y Linux).

Gran parte del código heredado se desarrolló con la creación de rutas codificadas de forma rígida, utilizando una barra invertida en las cadenas, como

 new StreamWriter(FeuxBarreFolderName + @"\\JazzSchmazz.txt");

que he convertido en algo como

 new StreamWriter(Path.Combine(FeuxBarreFolderName, "JazzSchmazz.txt"));

Quiero evitar que cualquier desarrollador agregue accidentalmente o deliberadamente \ en una ruta codificada nuevamente. Además de manejar esto en la revisión del código, ¿hay alguna manera de que pueda hacerlo automáticamente, ya sea mediante el análisis del código o una falla espectacular en el momento de la prueba? Mis búsquedas han sido inútiles.

Ideas que he tenido

  • Modifique el sistema de archivos ext4 en mis pruebas de integración de Docker para evitar nombres de archivo con \. No tengo idea si esto es posible/razonable.
  • Sea creativo con los permisos en mis pruebas de integración de Docker para evitar la creación de archivos en un directorio raíz (elimine w del directorio principal), pero permítalo en el directorio secundario (agregue w nuevamente a un directorio secundario específico). Esto se siente súper frágil.
  • Encuentre o escriba un analizador para mirar cadenas y quejarse de cualquier cadena que contenga un carácter \.

¿Hay una mejor manera aquí?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Como no hay una forma integrada de protegerse contra esto en el momento del desarrollo o la ejecución, agregaré este código para que se ejecute después de mis pruebas de integración. Barrirá el sistema de archivos y generará una excepción si encuentra archivos o directorios creados con un carácter inapropiado (barra invertida).

También quería agregar una verificación de dos puntos, en caso de que la gente estuviera creando rutas como "c:\feux\barre.txt", pero parece que al menos NuGet crea directorios con dos puntos (por ejemplo, ~/.local/share/NuGet/v3-cache/670c1461c29885f9aa22c281d8b7da90845b38e4$ps:_api.nuget.org_v3_index.json )

 void walkTree(System.IO.DirectoryInfo dirInfo, Action<System.IO.FileSystemInfo> action) { try { foreach (var file in dirInfo.GetFiles()) action(file); } catch (System.IO.DirectoryNotFoundException) { } try { foreach (var subdir in dirInfo.GetDirectories()) { action(subdir); walkTree(subdir, action); } } catch (System.UnauthorizedAccessException) { } catch (System.IO.DirectoryNotFoundException) { } catch (System.Security.SecurityException) { } } foreach (var drive in System.Environment.GetLogicalDrives()) { var driveInfo = new System.IO.DriveInfo(drive); if (!driveInfo.IsReady) continue; walkTree(driveInfo.RootDirectory, (FileSystemInfo fi) => { if (fi.Name.Contains('\\')) throw new InvalidOperationException($"'{fi.FullName}' was created with an inappropriate character"); }); }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda