• 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

  • 相关阅读:
    二分查找
    Java版各种排序算法 (冒泡,快速,选择,插入)
    mysql如何利用Navicat 导出和导入数据库
    eclipse项目红色叹号解决方法
    解决tomcat占用8080端口问题
    Window.onLoad 和 DOMContentLoaded事件的先后顺序
    jquery $(document).ready() 与window.onload的区别
    jQuery文档加载完毕的几种写法
    Emmet使用手册
    Sublime Text 3快捷键
  • 原文地址:https://www.cnblogs.com/jishumonkey/p/16053410.html
Copyright © 2020-2023  润新知