2015-01-14 6 views
1

Я получаю URL-адрес redirect в формате ниже.Regex, чтобы проверить URL-адрес

String redirectUrl = "http://beta.test.com/response"; 

И мы должны проверить этот URL против URL хранится в нашей БД, которая содержит инициал redirectUrl, как показано ниже.

String initial = "http://beta.test.com"; 

Так что для проверки, мы делаем ниже.

if(redirectUri.startsWith(initial)){ 
    match = true; 
} 

Но пользователь может пройти ниже значения redirectUrl также.

"http://beta.test.com.attacker.com/response" 
    "http://beta.test.com-attacker.com/response" 
    "http://beta.test.comattacker/response" 

Все вышеперечисленное являются недействительными URL, но проходит наше startsWith состояние. Я не могу сопоставить его с DB напрямую. Я ищу несколько шаблонов regex, чтобы проверить это, но пока не удалось реализовать.

+0

'Струнный начальный =«HTTP: //beta.test.com/";'? – sp00m

+0

noop, это только «String initial = http://beta.test.com»; нет косой черты в конце – RE350

ответ

2

Regex по-прежнему не нужен. Вы можете добавить косую черту в начальный URL и вызвать тот же starsWith метод:

if(redirectUri.startsWith(initial + "/")){ 
    match = true; 
}