Mat*_*agé 5 .net c# asp.net security
我正在编写一个 Web 应用程序(ASP.Net MVC、C#),它要求用户提供 RSS 或 Atom Feed 的 URL,然后我使用以下代码阅读:
var xmlRdr = XmlReader.Create(urlProvidedByUserAsString);
var syndicFeed = SyndicationFeed.Load(xmlRdr);
Run Code Online (Sandbox Code Playgroud)
在调试我的应用程序时,我不小心将其/something/like/this作为 url传递,并且收到一个异常,告诉我C:\something\like\this无法打开。
看起来用户可以提供本地路径,我的应用程序会尝试读取它。
我怎样才能使这个代码安全?仅检查urlhttps://或http://在 url 的开头可能是不够的,因为用户仍然可以输入类似http://localhost/blah. 有没有其他方法,也许使用 uri 类来检查 url 是否指向网络?
编辑:我想我还需要阻止用户输入指向我网络上其他机器的地址,例如这个例子:http://192.168.0.6/或http://AnotherMachineName/
小智 1
尝试:
new Uri(@"http://stackoverflow.com").IsLoopback
new Uri(@"http://localhost/").IsLoopback
new Uri(@"c:\windows\").IsLoopback
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
541 次 |
| 最近记录: |