【发布时间】:2011-04-14 11:10:07
【问题描述】:
我的目标是在用户默认浏览器中安全地打开网页。此网页的 URL 被视为“不受信任”(将其视为使用此软件打开的文档中的链接,但该文档可能来自任何地方,并且其中的链接可能是恶意的)
我想避免有人将“C:\Windows\malicious_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:并且是有效的网址)
在 C# 中有没有更好的方法来做到这一点?
【问题讨论】: