gpt4 book ai didi

c# - 如何确保用户提供的 url 不是本地路径?

转载 作者:行者123 更新时间:2023-11-30 12:49:43 25 4
gpt4 key购买 nike

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

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

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

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

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

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

最佳答案

尝试:

new Uri(@"http://stackoverflow.com").IsLoopback
new Uri(@"http://localhost/").IsLoopback
new Uri(@"c:\windows\").IsLoopback

关于c# - 如何确保用户提供的 url 不是本地路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10931642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com