[Uri类与基本URI一起使用似乎是一个主要问题。出于某种原因,如果传入一个相对URI并且它似乎是完整的URL,则“特征”是Uri类将忽略baseUri并仅使用相对Uri。这可能是一个安全漏洞,我想了解如何避免它,但仍然获得结合基本和相对URI的功能,以便在C#dotnetcore中创建单个URL。
在下面的示例中,您可以看到http://badexample.com
的相对uri使baseUri不出现在生成的URI中。这很危险。
using System;
public class Program
{
public static void Main()
{
var baseUri = new Uri("http://google.com");
var relativeUri = new Uri(baseUri, "search?q=stuff");
Console.WriteLine(relativeUri);
var badUri = new Uri(baseUri, "http://badexample.com");
Console.WriteLine(badUri);
}
}
输出:
http://google.com/search?q=stuff
http://badexample.com/
嗯,您可以逃脱:
: