1. 程式人生 > 其它 >The request was rejected because the URL contained a potentially malicious String “%2e“

The request was rejected because the URL contained a potentially malicious String “%2e“

https://blog.csdn.net/qq_42483257/article/details/122426009?spm=1001.2101.3001.6650.7&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-7.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-7.pc_relevant_antiscanv2

 

 

 

 

 

The request was rejected because the URL contained a potentially malicious String “%2e“

腦神

於 2022-01-11 10:38:59 釋出

255
收藏
分類專欄: 實際問題 文章標籤: java
版權

實際問題
專欄收錄該內容
2 篇文章0 訂閱
訂閱專欄
日誌出現:
[http-nio-80-exec-3] ERROR o.a.c.c.C.[.[localhost].[/].[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception

org.springframework.security.web.firewall.RequestRejectedException: The request was rejected because the URL contained a potentially malicious String "%2e"

原因:
在我使用的 Spring Security 框架中提供了一個 HttpFirewall,這是一個請求防火牆,它可以自動處理掉一些非法請求,請求地址格式中不能包含;、// 、 % .......等字元或編碼,必須是標準化 URL。

解決方法:
如果希望請求地址中可以出現 ; 或編碼後的字元 %3b 或者 %3B,可以按照如下方式配置:

@Bean
HttpFirewall httpFirewall() {
StrictHttpFirewall firewall = new StrictHttpFirewall();
firewall.setAllowSemicolon(true);
return firewall;
}
// 設定完成上一步之後,再次訪問相同的介面錯誤是 404 需要再配置SpringMVC 使 ; 不要被自動移除
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
@Override
protected void configurePathMatch(PathMatchConfigurer configurer) {
UrlPathHelper urlPathHelper = new UrlPathHelper();
urlPathHelper.setRemoveSemicolonContent(false);
configurer.setUrlPathHelper(urlPathHelper);
}
}
如果你希望請求地址中可以出現 // ,可以按照如下方式配置:

@Bean
HttpFirewall httpFirewall() {
StrictHttpFirewall firewall = new StrictHttpFirewall();
firewall.setAllowUrlEncodedDoubleSlash(true);
return firewall;
}
如果希望請求地址中可以出現 %,可以按照如下方式配置:

@Bean
HttpFirewall httpFirewall() {
StrictHttpFirewall firewall = new StrictHttpFirewall();
firewall.setAllowUrlEncodedPercent(true);
return firewall;
}
如果希望請求地址中出現 / 編碼後的字元 %2F 或者 %2f ,可以按照如下方式配置:

如果希望請求地址中出現 \ 編碼後的字元 %5C 或者 %5c ,可以按照如下方式配置:

@Bean
HttpFirewall httpFirewall() {
StrictHttpFirewall firewall = new StrictHttpFirewall();
firewall.setAllowBackSlash(true);
firewall.setAllowUrlEncodedSlash(true);
return firewall;
}
如果希望請求地址中出現 . 或編碼之後的字元 %2e、%2E,可以按照如下方式配置:

@Bean
HttpFirewall httpFirewall() {
StrictHttpFirewall firewall = new StrictHttpFirewall();
firewall.setAllowUrlEncodedPeriod(true);
return firewall;
}
總結:
雖然我們可以手動修改 Spring Security 中的這些限制,但是不建議大家做修改,每一條限制都有它的原由,每放開一個限制,就會帶來未知的安全風險。
————————————————
版權宣告:本文為CSDN博主「腦神」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/qq_42483257/article/details/122426009