我创建了一个 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编码的漏洞利用,从而绕过安全性约束。