Appscan扫出API成批分配问题解决方案

简介: Appscan扫出API成批分配问题解决方案

漏洞条件:

请求json参数不是接收参数的javabean及其父类中的任意属性。

意思就是:我javaben里面没有这个参数 你缺传递过来了 例如我只需要pageNum pageSize 你还传了role:admin 那么这样就有可能导致致特权升级、数据篡改、绕过安全机制

解决方案:

1、自建项目修复方案一:增加反序列化配置方案

1. #1、在项目的统一序列化配置中开启严格匹配模式(?如有),此处以jackson为例
2. @Configuration
3. public class JacksonConverters {
4. @Bean
5. public HttpMessageConverters JacksonHttpMessageConverters() {
6. MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter
7. = new MappingJackson2HttpMessageConverter();
8. ObjectMapper objectMapper = new ObjectMapper();
9. //省略其他配置开始
10. //反序列化的时候如果多了其他属性,抛出异常
11.         objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true);
12. //省略其他配置结束
13.      }
14. }
15. 
16. #2、统一异常捕获或者返回处增加非200状态码
17.   /**
18.      * 捕获反序列化异常HttpMessageNotReadableException,增加500状态码返回
19.      * @param request   请求
20.      * @param exception 异常对象
21.      * @return 响应
22.      */
23. @ExceptionHandler(value = HttpMessageNotReadableException.class)
24. public ResponseEntity<Map<String, Object>> methodHttpMessageNotReadableExceptionHandler(
25.             HttpServletRequest request, HttpMessageNotReadableException exception) {
26. //按需重新封装需要返回的错误信息
27. WebRequest webRequest = new ServletWebRequest(request);
28.         Map<String, Object> body = errorAttributes.getErrorAttributes(webRequest, ErrorAttributeOptions.defaults());
29.         body.put(DATA, "convert exception message to JSON");
30.         body.put(STATUS, HttpStatus.INTERNAL_SERVER_ERROR.value());
31.         body.put(MESSAGE, HttpStatus.INTERNAL_SERVER_ERROR.getReasonPhrase());
32.         body.put(SUCCESS,false);
33. return new ResponseEntity<>(body, HttpStatus.INTERNAL_SERVER_ERROR);
34.     }
35. 
36. #2、或在在其他异常拦截方法上增加状态码注解
37. @ResponseStatus()

2、自建项目修复方案二:签名验证

针对所有的请求增加参数签名,后端采用同样的方式对参数进行签名,比较前后端签名是否一致,伪代码如下:

1. #前端请求
2. 
3. 请求 URL: http://localhost/cars/query
4. 请求方法: POST
5. HTTP状态码:200
6. playload:{"color":"red","company":"ltl","seats":"2-2"} #正常请求
7. Header:sign:ErOVBda4VMFdX9aixigRslAjY0rhT7lLxy
8. 
9. #后端controller
10. @PostMapping(value = "/query")
11. public BaseResponse query(@RequestBody Car car){
12.     String signFront=request.header("sign");
13.     String signBackend=signUtils.handler(car);
14. if(!signBackend.equals(signFront)){
15.     throws new ServiceErrorException("签名异常");        
16.     }
17. }


相关文章
|
域名解析 网络协议 Linux
【异常解决】UnknownHostException: api.weixin.qq.com 的解决方案
【异常解决】UnknownHostException: api.weixin.qq.com 的解决方案
906 0
|
缓存 API 流计算
Flink--7、窗口(窗口的概念、分类、API、分配器、窗口函数)、触发器、移除器
Flink--7、窗口(窗口的概念、分类、API、分配器、窗口函数)、触发器、移除器
|
JavaScript 定位技术 API
百度离线地图API v3.0开发解决方案
百度离线地图API v3.0开发解决方案
773 0
|
安全 Java API
解决 Swagger API 未授权访问漏洞:完善分析与解决方案
Swagger 是一个用于设计、构建、文档化和使用 RESTful 风格的 Web 服务的开源软件框架。它通过提供一个交互式文档页面,让开发者可以更方便地查看和测试 API 接口。然而,在一些情况下,未经授权的访问可能会导致安全漏洞。本文将介绍如何解决 Swagger API 未授权访问漏洞问题。
|
2月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
151 3
|
3月前
|
人工智能 运维 安全
聚焦API安全未来,F5打造无缝集成的解决方案
聚焦API安全未来,F5打造无缝集成的解决方案
88 26
|
3月前
|
小程序 前端开发 API
微信小程序 - 调用微信 API 回调函数内拿不到 this 问题(解决方案)
本文讨论了在微信小程序中调用API回调函数时无法获取到`this`上下文的问题,并提供了解决方案。在回调函数中,使用一个变量(如`that`)来保存当前的`this`引用,然后在回调内部使用这个变量来访问当前页面的数据和方法。
|
7月前
|
人工智能 Serverless API
AI 绘画平台难开发,难变现?试试 Stable Diffusion API Serverless 版解决方案
AI 绘画平台难开发,难变现?试试 Stable Diffusion API Serverless 版解决方案
10780 132
|
6月前
|
负载均衡 Java API
Spring Cloud Gateway 详解:构建高效的API网关解决方案
Spring Cloud Gateway 详解:构建高效的API网关解决方案
179 0
|
7月前
|
人工智能 Serverless API
AI 绘画平台难开发,难变现?试试 Stable Diffusion API Serverless 版解决方案
AI 绘画平台难开发,难变现?试试 Stable Diffusion API Serverless 版解决方案