我收到了以下格式的redirect
网址。
String redirectUrl = "http://beta.test.com/response";
我们必须根据存储在我们的数据库中的网址验证此网址,该网址包含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"
以上所有内容都是无效的网址,但会传递我们的startsWith
条件。我无法直接与DB匹配。我正在寻找一些regex
模式来检查这一点,但到目前为止还无法实现。
答案 0 :(得分:2)
此处仍然不需要正则表达式。您可以在初始URL中附加斜杠并调用相同的starsWith
方法:
if(redirectUri.startsWith(initial + "/")){
match = true;
}
答案 1 :(得分:0)