我正在编写一个 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/