public static void Main()
string userInput = "https://git.example.com/test/";
if (isSafeURL(userInput))
Console.WriteLine("safe");
Console.WriteLine("unsafe");
static string[] validBaseURLs = new string[] {
"https://wiki.example.com/",
"https://jira.example.com/",
"https://git.example.com/",
public static bool isSafeURL(string untrustedURL)
foreach (string baseURL in validBaseURLs)
if (validateBaseURL(untrustedURL, baseURL))
public static bool validateBaseURL(string untrustedURL, string baseURL)
Uri baseUri = new Uri(baseURL);
if (!Uri.TryCreate(baseUri, untrustedURL, out Uri newUri))
if (!baseUri.IsBaseOf(newUri))