Mi objetivo es abrir de forma segura una página web en el navegador predeterminado de los usuarios. La URL de esta página web se considera "no confiable" (piénselo como un enlace en un documento abierto con este software, pero el documento podría ser desde cualquier lugar y los enlaces podrían ser maliciosos)Implementación de Safe Process.Start para cadenas URL que no son de confianza
Quiero evitar alguien que pasa "C: \ Windows \ malicious_code.exe" fuera como una dirección URL
mi pensamiento actual es que hacer algo como esto:
Uri url = new Uri(urlString, UriKind.Absolute);
if(url.Scheme == Uri.UriSchemeHttp || url.Scheme == Uri.UriSchemeHttps)
{
Process.Start(url.AbsoluteUri);
}
me estoy olvidando de nada más que mi 'urlString' podría contener eso lo hace peligroso (por ejemplo, un nuevo personaje de línea que permitiría a alguien colarse un segundo proceso para iniciarse después de la URL o un posible ejecución de un ejecutable relativo comenzando con http)?
Estoy bastante seguro de que ambos casos son manejados por esto (ya que no creo que Process.Start te permita iniciar dos procesos como lo harías en un archivo BATCH y esto solo debería permitir cadenas que comiencen por http: o https: y son URL válidas)
¿Hay alguna forma mejor de hacerlo en C#?
Estoy bastante seguro de que eso es básicamente lo que se implementó en mi pregunta :) – userx
Lo que tienes es bastante sólido. No puedo pensar en nada más que pueda colarse. –