如何使用 glob 验证我的 REFERER URL?
How can I validate my REFERER URL with glob?
我正在尝试检查我的引用字符串是否来自任何 URL,格式为 https://www.google.com/{{anything}}:
String referrer = req.getHeader("REFERER");
if (!(referrer.equals("https://www.google.com")) + createRegexFromGlob("*")) {
System.out.println("The referrer is valid.");
} else {
System.out.println("The referrer is not valid.");
}
这是 glob:
public static String createRegexFromGlob(String glob)
{
String out = "^";
for(int i = 0; i < glob.length(); ++i)
{
final char c = glob.charAt(i);
switch(c)
{
case '*': out += ".*"; break;
case '?': out += '.'; break;
case '.': out += "\."; break;
case '\': out += "\\"; break;
default: out += c;
}
}
out += '$';
return out;
}
引荐来源 URL 是否必须直接命中,或者它会自动知道它是否来自基础 URL、https://www.google.com?
我想我可以只使用 .contains
而不是确保字符串等于某个东西加上一个正则表达式?这有什么问题吗?
为什么不使用 .startsWith
呢?
尝试
if (referrer.startsWith("https://www.google.com"))
另外,你到底在用 createRegexFromGlob
做什么?只需将 URL 与以下正则表达式匹配
^https:\/\/www\.google\.com.*$
Java代码:
String pattern = "^https:\/\/www\.google\.com.*$";
if(referrer.matches(pattern))
.contains
可以使用,但它也会接受 URL 之类的
http://example.com/https://www.google.com
我正在尝试检查我的引用字符串是否来自任何 URL,格式为 https://www.google.com/{{anything}}:
String referrer = req.getHeader("REFERER");
if (!(referrer.equals("https://www.google.com")) + createRegexFromGlob("*")) {
System.out.println("The referrer is valid.");
} else {
System.out.println("The referrer is not valid.");
}
这是 glob:
public static String createRegexFromGlob(String glob)
{
String out = "^";
for(int i = 0; i < glob.length(); ++i)
{
final char c = glob.charAt(i);
switch(c)
{
case '*': out += ".*"; break;
case '?': out += '.'; break;
case '.': out += "\."; break;
case '\': out += "\\"; break;
default: out += c;
}
}
out += '$';
return out;
}
引荐来源 URL 是否必须直接命中,或者它会自动知道它是否来自基础 URL、https://www.google.com?
我想我可以只使用 .contains
而不是确保字符串等于某个东西加上一个正则表达式?这有什么问题吗?
为什么不使用 .startsWith
呢?
尝试
if (referrer.startsWith("https://www.google.com"))
另外,你到底在用 createRegexFromGlob
做什么?只需将 URL 与以下正则表达式匹配
^https:\/\/www\.google\.com.*$
Java代码:
String pattern = "^https:\/\/www\.google\.com.*$";
if(referrer.matches(pattern))
.contains
可以使用,但它也会接受 URL 之类的
http://example.com/https://www.google.com