我正在扭曲一个Web应用程序(ASP.Net MVC,C#),要求用户提供RSS或Atom Feed的URL,然后我用以下代码阅读:
var xmlRdr = XmlReader.Create(urlProvidedByUserAsString);
var syndicFeed = SyndicationFeed.Load(xmlRdr);
在调试我的应用程序时,我不小心将/something/like/this
作为网址传递过来,我得到一个例外,告诉我C:\something\like\this
无法打开。
看起来用户可以提供本地路径,我的应用程序会尝试读取它。
如何使此代码安全?在网址开头检查https://
或http://
可能是不够的,因为用户仍然可以输入http://localhost/blah
之类的内容。有没有其他方法,也许与uri类检查一个网址是否指向网络?
修改:我想我还需要阻止用户输入指向我网络上其他计算机的地址,例如:http://192.168.0.6/
或http://AnotherMachineName/
答案 0 :(得分:1)
尝试:
new Uri(@"http://stackoverflow.com").IsLoopback
new Uri(@"http://localhost/").IsLoopback
new Uri(@"c:\windows\").IsLoopback