代码之家  ›  专栏  ›  技术社区  ›  David Ebbo

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

  •  2
  • David Ebbo  · 技术社区  · 14 年前

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

    e、 g.有人建议这样做 here .

    问题是,如果URL不可信,就会发生不好的事情。e、 g.如果字符串是@“c:\windows\system32\记事本“,上面的代码将启动记事本而不询问任何问题。

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

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

    • 查看Uri协议,并阻止任何非http/https的内容。这是哈奇。
    • 通过某个注册表项找到已注册的浏览器,并在cmd行上用Uri启动它。在某些浏览器中,这种类型的代码往往比较混乱和不可靠。

    所以我希望有一种技术可以像LaunchUrlThroughBrowser(url)一样。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Community Doug McClean    7 年前

    似乎没有很好的方法可以做到这一点,除非手动过滤URL,如中所述 Safe Process.Start implementation for untrusted URL strings . 所以这可能就是出路。