5

我正在编写一个 Web 应用程序(ASP.Net MVC、C#),它要求用户提供 RSS 或 Atom Feed 的 url,然后我使用以下代码阅读:

var xmlRdr = XmlReader.Create(urlProvidedByUserAsString);
var syndicFeed = SyndicationFeed.Load(xmlRdr);

在调试我的应用程序时,我不小心/something/like/this作为 url 传递了一个异常,告诉我C:\something\like\this无法打开。

看起来用户可以提供本地路径,我的应用程序会尝试读取它。

我怎样才能使这段代码安全?检查url 的开头https://或开头可能是不够的,因为用户仍然可以输入类似. 有没有其他方法,也许用 uri 类来检查一个 url 是否指向网络?http://http://localhost/blah

编辑:我想我还需要防止用户输入指向我网络上其他机器的地址,例如这个例子:http://192.168.0.6/http://AnotherMachineName/

4

1 回答 1

1

尝试:

new Uri(@"http://stackoverflow.com").IsLoopback
new Uri(@"http://localhost/").IsLoopback
new Uri(@"c:\windows\").IsLoopback
于 2012-06-07T12:25:56.263 回答