项目服务间访问提示The request was rejected because the URL contained a potentially malicious String “//“

目录

场景:

原因:

解决方案:

总结:


场景:

本地项目访问突然提示如下

严重: 在路径为[/activiti-webapp-rest2]的上下文中,servlet[dispatcher]的Servlet.service()引发异常
org.springframework.security.web.firewall.RequestRejectedException: The request was rejected because the URL contained a potentially malicious String "//"
        atorg.springframework.security.web.firewall.StrictHttpFirewall.rejectedBlocklistedUrls(StrictHttpFirewall.java:535)
 atorg.springframework.security.web.firewall.StrictHttpFirewall.getFirewalledRequest(StrictHttpFirewall.java:505)
 

原因:

有的请求路径中含有 //双短横线
http://localhost:8081/activiti-rest/service//repository/models?key=pid-06733e2d-758f-406c-ab7b-bf1b802952ff

解决方案:

在@Conifguration配置文件中加入如下bean

@Bean
    public HttpFirewall allowUrlEncodedSlashHttpFirewall() {
            StrictHttpFirewall firewall = new StrictHttpFirewall();
            //此处可添加别的规则,目前只设置 允许双 //
            firewall.setAllowUrlEncodedDoubleSlash(true);
            return firewall;
        }

总结:

1.开发过程最好是按照规范开发,可以避免诸如此类低级问题。

 比如项目中前缀是

http://localhost:8081/activiti-rest/service

那么controller统一

/repository/models?key=pid-06733e2d-758f-406c-ab7b-bf1b802952ff

这样的话拼接到一起就不会有双横线问题了

2.当然如果允许路径中存在双横线则可以在security中添加配置

@Bean
    public HttpFirewall allowUrlEncodedSlashHttpFirewall() {
            StrictHttpFirewall firewall = new StrictHttpFirewall();
            //此处可添加别的规则,目前只设置 允许双 //
            firewall.setAllowUrlEncodedDoubleSlash(true);
            return firewall;
        }