我创建了一个 Controller 来进行数据搜索。但是,当我死于关键字'%'时,它将返回HTTP 400错误。
这是控制者:

@RequestMapping(value = "/search/{txtKeyWord}")
public String pageVipStory(@PathVariable("txtKeyWord") String txtKeyWord, Model model) {
     logger.info("Keyword In URL: " + txtKeyWord);
     model.addAttribute("txtKeyWord", txtKeyWord);
     model.addAttribute("txtKeyWordEndCode", UriUtils.encode(txtKeyWord, "UTF-8"));
     getMenuAndInfo(model, "Search " + txtKeyWord);

     return "web/searchPage";
}

通过链接:“http://localhost:8080/search/%25”,错误消息:



谁能告诉我错误所在。以及如何克服呢?谢谢!

最佳答案

您可以使用作为StrictHttpFirewall的自定义实例来使用默认的Spring Security Firewall。

@Bean
public HttpFirewall allowUrlEncodedPercentHttpFirewall() {
    StrictHttpFirewall firewall = new StrictHttpFirewall();
    firewall.setAllowUrlEncodedPercent(true);
    return firewall;
}

请注意,这可能导致涉及双重URL编码的漏洞利用,从而绕过安全性约束。

09-26 02:59