springboot + springSecurity 遇到 RequestRejectedException


主要参考了:https://blog.csdn.net/andy_zhang2007/article/details/90573633 老哥的文章。

原来一直会有个疑问,springSecurity 和 Shiro 几乎相似,为什么要用springSecurity。

不得不说,他是真的严谨啊,我不小心写了两个 “ \\ ”竟然给我报错。我都蒙了,原来用那一段程序一直没有问题啊

直到我在度娘看到了原来是 springSecurity 的原因。

在我们使用Spring Security开发Spring MVC应用时,有的时候会遇到RequestRejectedException,这时候应该怎么办呢 ?

实际上,RequestRejectedException是Spring Security的防火墙机制抛出的。如果遇到了该异常,开发人员可以从以下几个方面检查是否存在问题 :

请求路径中是否包含./,/../,/.等字符串序列,这些字符串序列会被认为是有安全问题的,从而导致该异常;

请求路径中是否包含连续的两个斜杠//(除了协议部分的//之外),该字符串序列也会导致该异常;

如果请求路径中包含不可打印ASCII字符则会抛出该异常拒绝该请求;

如果请求URL(无论是URL编码前还是URL编码后)包含了分号(;或者%3b或者%3B)则会抛出该异常拒绝该请求;

如果请求URL(无论是URL编码前还是URL编码后)包含了斜杠(%2f或者%2F)则会抛出该异常拒绝该请求;

如果请求URL(无论是URL编码前还是URL编码后)包含了反斜杠(\或者%5c或者%5B)则会抛出该异常拒绝该请求;

如果请求URL在URL编码后包含了%25(URL编码了的百分号%),或者在URL编码前包含了百分号%则会抛出该异常拒绝该请求;

如果请求URL在URL编码后包含了URL编码的英文句号.(%2e或者%2E)则会抛出该异常拒绝该请求。