spring webmvc模块日志提示警告,有人漏洞攻击,警告如下:
o.s.w.s.r.ResourceHttpRequestHandler : Path contains "../" after call to StringUtils#cleanPath: [../../../../../..
看到如上提示,那我们使用spring webmvc模块(比如springboot)的服务器是否有攻破?
分析:
webmv地址映射大概分两类,一类是自定义的handler(@Controller),一类是文件。
../这种只作用于后者。spring mvc会先从后者找资源,找不到再从前者找
1、spring webmvc 对地址会经过一系列解析
上边的警告是解析过程中,若解析清理后的路径 仍然含有../则识别为不合法路径
springmvc 支持 /a/b/../b 等同 /a/b,解析前允许有../但解析后还有../则不合法,
如上警告,请求结束。
2、若解析通过,则最终的文件会通过 java classloader.getResource 在上下文路径中,
spring webmvc会指定路径到上下文中比如META-INF\resources\static ,指定后就可以找到。
找不到的文件通过controller地址映射,handler映射也不到就走/error结束。
3、总结:出现如上警告,说明webmvc拦截了,服务安全无需处理。