繁体   English   中英

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

[英]What's the safest way to launch an untrusted URL?

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

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

例如在这里建议。

这样做的问题是,如果URL不可信,则可能会发生不良情况。 例如,如果字符串为@“ c:\\ windows \\ system32 \\ notepad.exe”,则上面的代码将启动记事本,而不会出现任何问题。

OTOH,如果您尝试在浏览器中启动像这样的本地可执行文件,则在它发生之前您将获得大量的安全检查。

所以问题是:如何以一种干净的方式(在C#中)安全地以编程方式完成此任务?

我们考虑过的不太干净的技术:

  • 查看Uri协议,并阻止非http / https的任何内容。 这是hacky。
  • 通过一些reg键找到已注册的浏览器,然后在cmd行中使用Uri启动它。 在某些浏览器中,这种类型的代码往往很杂乱且不可靠。

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

似乎没有很好的方法来做到这一点,除非手动过滤URL,如Safe Process.Start对不可信URL字符串的实现中所述 因此,这可能只是要走的路。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM