Моя цель - безопасно открыть веб-страницу в браузере пользователя по умолчанию. URL-адрес этой веб-страницы считается «ненадежным» (его можно рассматривать как ссылку в документе, открытом с помощью этого программного обеспечения, но документ может быть откуда угодно, а ссылки в нем могут быть вредоносными)
Я хочу, чтобы кто-то не выдавал "C: \ Windows \ malware_code.exe" как URL
Моя текущая мысль - сделать что-то вроде этого:
Uri url = new Uri(urlString, UriKind.Absolute);
if( url.Scheme == Uri.UriSchemeHttp || url.Scheme == Uri.UriSchemeHttps )
{
Process.Start(url.AbsoluteUri);
}
Я забыл обо всем, что может содержать моя urlString, что делает это опасным (например, символ новой строки, который позволил бы кому-нибудь проникнуть во второй процесс после URL или возможного выполнения относительного исполняемого файла) начиная с http)?
Я почти уверен, что оба этих случая обрабатываются этим (поскольку я не верю, что Process.Start позволяет вам запускать два процесса, как в файле BATCH, и это должно разрешать только строки, начинающиеся с http: или https: и действительные URL)
Есть ли лучший способ сделать это в C #?