【问题标题】:How can I validate my REFERER URL with glob?如何使用 glob 验证我的 REFERER URL?
【发布时间】:2016-05-27 09:56:58
【问题描述】:

我正在尝试检查我的引用字符串是否来自任何格式为 https://www.google.com/{{anything}} 的 URL:

    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.");
    }

这里是全局:

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;
}

引荐来源网址必须是直接点击还是会自动知道它是否来自基本网址https://www.google.com

我想我可以只使用.contains 而不是确保字符串等于某个值加上一个正则表达式?这有什么问题吗?

【问题讨论】:

    标签: java regex referrer


    【解决方案1】:

    为什么不改用.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  
    

    【讨论】:

    • 并且字符串中的正则表达式被理解了?
    • 抱歉,没听懂。你试过startsWith吗?
    • 是的 .startswith 有效。我想知道是否可以询问 url 字符串是否等于您提供的正则表达式。
    • 如果您的意思是您想使用正则表达式进行检查,我已在答案中添加了这一点。
    • 效果很好。谢谢!
    猜你喜欢
    • 2012-03-30
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 2021-12-05
    相关资源
    最近更新 更多