启动不受信任的URL最安全的方法是什么?

时间:2010-09-27 04:15:25

标签: c# .net

似乎普遍接受的启动URL的方法是调用Process.Start,例如

var url = new Uri(uriString);
Process.Start(url.AbsoluteUri);

e.g。建议here

问题在于,如果URL不受信任,可能会发生不好的事情。例如如果字符串是@“c:\ windows \ system32 \ notepad.exe”,上面的代码将启动记事本,不会有任何问题。

OTOH,如果您尝试在浏览器中启动此类本地可执行文件,则会在发生之前进行大量安全检查。

所以问题是:如何以干净的方式(在C#中)以编程方式安全地完成这项工作?

我们考虑的不太清洁的技术:

  • 查看Uri协议,并阻止任何不是http / https的内容。这很黑。
  • 通过一些注册表找到注册的浏览器,并在cmd行上使用Uri启动它。对于某些浏览器,这种类型的代码往往会变得混乱和不可靠。

所以我希望有一种类似LaunchUrlThroughBrowser(url)的技术。

1 个答案:

答案 0 :(得分:1)

Safe Process.Start implementation for untrusted URL strings中所述,似乎没有很好的方法可以做到这一点,而不是手动过滤网址。所以这可能只是一条路。