当前位置: 首页 > news >正文

曲靖网站建设公司靖网站建设朋友圈网络营销

曲靖网站建设公司靖网站建设,朋友圈网络营销,网站建设的上市公司,武汉百度推广外包今天接到安全团队的说swagger有未授权访问漏洞,即使在swagger关闭的情况下http://127.0.0.1:8086/agcloud/v2/api-docs?group%E7%94%A8%E6%88%B7%E5%85%B3%E8%81%94%E4%BF%A1%E6%81%AF%E6%A8%A1%E5%9D%97仍然还能访问。 看了下原来是有写一个拦截器 registry.addI…

今天接到安全团队的说swagger有未授权访问漏洞,即使在swagger关闭的情况下http://127.0.0.1:8086/agcloud/v2/api-docs?group=%E7%94%A8%E6%88%B7%E5%85%B3%E8%81%94%E4%BF%A1%E6%81%AF%E6%A8%A1%E5%9D%97仍然还能访问。

看了下原来是有写一个拦截器

        registry.addInterceptor(loginInterceptor).addPathPatterns("/v2/api-docs");registry.addInterceptor(loginInterceptor).addPathPatterns("/swagger-ui.html");

断点之后发现是有生效的,/swagger-ui.html不能再访问,但是/v2/api-docs路径还是可以访问,确定拦截器有生效,不是拦截器的问题。

查看基于springMVC请求入口找到DispatcherServlet类,找到doDispatch方法

 

protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception {......try {// HandlerMapping根据请求路径选择对应的handler(controller下的某个方法)来处理当前请求// 补充下HandlerMapping:// 1. 根据当前请求的找到对应的 Handler,// 2. 将 Handler(执行程序)与一堆 HandlerInterceptor(拦截器)封装到 HandlerExecutionChain 对象中// 3. DispatcherServlet会从容器中取出所有HandlerMapping实例并遍历,让HandlerMapping实例根据自己实现类的方式去尝试查找HandlermappedHandler = getHandler(processedRequest);......// 根据handler来找到支持它的HandlerAdapter,通过HandlerAdapter执行这个最后的代码处理逻辑得到具体的返回结果HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());......// 拦截器preHandle处理,按顺序执行if (!mappedHandler.applyPreHandle(processedRequest, response)) {return;}// handlerAdapter实际的执行逻辑mv = ha.handle(processedRequest, response, mappedHandler.getHandler());......// 拦截器postHandle处理mappedHandler.applyPostHandle(processedRequest, response, mv);} catch (Throwable err) {......} finally {......}
}

在doDispatch方法中,拦截器的preHandle执行逻辑在mappedHandler.applyPreHandle中,接下来我看下这个方法:

	boolean applyPreHandle(HttpServletRequest request, HttpServletResponse response) throws Exception {// 遍历handler绑定的所有interceptors,按顺序执行preHanlde方法for (int i = 0; i < this.interceptorList.size(); i++) {HandlerInterceptor interceptor = this.interceptorList.get(i);// 如果preHandle返回false,则触发afterCompletion方法的执行if (!interceptor.preHandle(request, response, this.handler)) {triggerAfterCompletion(request, response, null);return false;}this.interceptorIndex = i;}return true;}

debug跟踪到这个方法,发现applyPreHandle方法中this.interceptorList的长度为0,即处理该请求的handler没有绑定任何interceptor。这个时候很容易想到问题可能出现在handlerMapping上,因为handlerMapping负责将handler与一堆 handlerInterceptor(拦截器)封装到 HandlerExecutionChain 对象中

doDispatch中的getHandler方法断点

参考:记一次自定义拦截器失效的问题排查 - 简书

http://www.dt0577.cn/news/2253.html

相关文章:

  • 深圳建设网站龙岗网站建设网店推广方案策划书
  • 网页制作与网站建设作业百度相册登录入口
  • 网站关键词写在哪里汨罗网站seo
  • 手机浏览wordpress图片优化软件
  • 长春站建筑风格深圳网站关键词
  • 如何做网站 知乎app注册接单平台
  • 简单的logo设计电商seo引流
  • 电商设计一般都是做什么南宁seo收费
  • 用dw做简单图片网站seo1域名查询
  • 北京公司排名100电商seo是什么意思
  • 上海的外贸网站建设公司排名新闻式软文范例
  • 网站定制深圳百度网址是多少
  • 建设网站提供资料的函深圳网络推广培训中心
  • 制作网页最简单的软件seo查询是什么意思
  • 美女色情做视频网站搜索引擎优化的技巧
  • 做钢丝绳外贸的网站嘉兴seo外包服务商
  • 怎么创建网页桌面快捷方式郑州seo排名扣费
  • 手机个人简历模板下载网站模板广州搜发网络科技有限公司
  • 昆明网站建设天猫运营站长工具网站查询
  • wordpress怎么开发百度seo优化方法
  • SaaS网站可以做seo嘛免费代理浏览网页
  • 管理网站制作哈尔滨企业网站seo
  • 简述网站建设的基本过程西安网站外包
  • 家居企业网站建设案例制作网站公司
  • 固定ip如何做网站服务器电商怎么做如何从零开始
  • app建站平台快速排名优化
  • 做垂直类网站关键词
  • b2b网站操作流程百度一下app下载安装
  • 用php做网站百度广告投放技巧
  • 网站建设的目标是什么 提供了哪些栏目如何自己制作网页