apache / servicecomb-java-chassis

ServiceComb Java Chassis is a Software Development Kit (SDK) for rapid development of microservices in Java, providing service registration, service discovery, dynamic routing, and service management features
Apache License 2.0
1.9k stars 807 forks source link

servicecomb 2.8.14版本接口入参校验失败后抛出的异常信息存在内部代码结构和行号等信息 #4260

Open JedrekWang opened 6 months ago

JedrekWang commented 6 months ago

背景

当 接口调用传递的body跟接口定位的入参不一致时,接口返回的message信息存在内部代码结构和行号等信息

复现demo

接口入参定义如下:


public class CommonReq {
    private String name;
    private Integer type;
}

http请求传递的body如下:

{
    "name": "jedrek",
    "type": "hard"
}

报错信息如下:

{ "message": "Parameter is not valid for operation [xxx]. Parameter is [commonReq]. Processor is [body]. Message is [Cannot deserialize value of type java.lang.Integer from String \"hard\": not a valid java.lang.Integer value\n at [Source: (org.apache.servicecomb.foundation.vertx.stream.BufferInputStream); line: 3, column: 13] (through reference chain: CommonReq[\"type\"])]." }

这个打印信息感觉存在安全问题,暴露了接口的内部实现,可否针对于这种场景,对打印的异常message进行调整

chengyouling commented 6 months ago

但是这个信息对于参数异常时定位有很大的帮助,提示的也是某个参数,不会提示全部参数内容

liubao68 commented 6 months ago

这个内容是常见的json格式不正确的消息, 非常普遍。 没有信息安全可利用的信息,而这个信息对于日常定位一些问题帮助非常大。 综合看, 不作为安全问题处理,保留现状。