Pregunta

estoy analizando mi código (C #, aplicación de escritorio) con análisis de código CAT.NET y conseguir "Higiénico la ruta del archivo antes de pasar a las rutinas del sistema de archivos" mensaje cuando se trata de nombres de archivo. Lo que no entiendo es que para asegurar el nombre del archivo es válido, yo uso:

void SomeMethod(String filename)
{
    filename = System.IO.Path.GetFullPath(filename);
    // ... Do stuff
}

No es una "solución mágica" para resolver los problemas con los nombres de archivo no válidos? He leído algo similar aquí (primera respuesta), pero en mi caso estoy tratando sólo con archivos locales, bueno, algo muy básico, así que ...

Así que por qué estoy recibiendo este mensaje y cómo hacer para evitar que llegue?

¿Fue útil?

Solución

Sé que esto es una vieja pregunta, pero yo he encontrado algo que puede ser útil específicamente relacionado con el mensaje de error CAT.Net.

En un entrada de blog sobre las Reglas de flujo de datos CAT.NET, tienen que decir acerca de la FileCanonicalizationRule:

Descripción

  

La entrada del usuario utilizado en el archivo de rutinas de tratamiento pueden conducir potencialmente a   Presentar la vulnerabilidad canónicos. Código es particularmente susceptible   a problemas de canonización si hace que cualquier decisión basada en el nombre   de un recurso que se pasa al programa como entrada. Archivos, caminos,   y URLs son los tipos de recursos que son vulnerables a la canonización   porque en cada caso hay muchas maneras diferentes para representar a la   mismo nombre.

Resolución

  

Desinfecte la ruta del archivo antes de pasar a presentar las rutinas de manipulación.   Uso Path.GetInvalidFileNameChars o Path.GetInvalidPathChars para obtener   los caracteres no válidos y eliminarlos de la entrada. Más   la información se puede encontrar en    http://msdn.microsoft.com/en- es / library / system.io.path.getinvalidfilenamechars.aspx .

Por lo tanto, sugieren que utilice Path.GetInvalidFileNameChars y Path.GetInvalidPathChars validar su caminos.

Tenga en cuenta que su sugerencia es Eliminar los caracteres no válidos. Si bien este hecho hará la ruta válida, puede provocar un comportamiento inesperado para el usuario. A medida que los comentarios sobre este pregunta / respuesta sugiere que probablemente es mejor dejar de fumar temprano y avisar al usuario de que su camino no es válido, en lugar que hacer algo inesperado con su entrada (como la eliminación de su mala disposición y el uso de la versión modificada).

Otros consejos

Si el nombre proviene de un usuario, que podría ser algo así como "../../../../etc/passwd" - el mensaje de error que le está diciendo que es necesario desinfectar de modo que pueda 't get a los directorios que no se supone a.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top