Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

116
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda