似乎普遍接受的启动URL的方法是调用Process.Start,例如
var url = new Uri(uriString);
Process.Start(url.AbsoluteUri);
e.g。建议here。
问题在于,如果URL不受信任,可能会发生不好的事情。例如如果字符串是@“c:\ windows \ system32 \ notepad.exe”,上面的代码将启动记事本,不会有任何问题。
OTOH,如果您尝试在浏览器中启动此类本地可执行文件,则会在发生之前进行大量安全检查。
所以问题是:如何以干净的方式(在C#中)以编程方式安全地完成这项工作?
我们考虑的不太清洁的技术:
所以我希望有一种类似LaunchUrlThroughBrowser(url)的技术。
答案 0 :(得分:1)
如Safe Process.Start implementation for untrusted URL strings中所述,似乎没有很好的方法可以做到这一点,而不是手动过滤网址。所以这可能只是一条路。