apache / apache/servicecomb-java-chassis
servicecomb 2.8.14版本接口入参校验失败后抛出的异常信息存在内部代码结构和行号等信息
- Vorherrschende Sprache
- Java
- Sterne
- 1.9k
- Forks
- 814
- Ø Merge
- 8 T. 23 Std.
- Gemergte PRs (30 T.)
- 1
Beschreibung
#### 背景
当 接口调用传递的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进行调整
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Rechercherichtung
Beginnen Sie damit, die Fehlerbehandlung bei der Deserialisierung des Request-Bodys nachzuverfolgen, die die gemeldete Antwort mit Parameter, Processor und Message erzeugt. Reproduzieren Sie die CommonReq-Payload mit einem nicht-ganzzahligen Typ und überprüfen Sie anschließend, dass die Antwort keine interne Codestruktur, Quellpositionen oder Implementierungsdetails mehr offenlegt, während sie weiterhin vermittelt, dass die Eingabe ungültig ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- java
- Bereich
- api, backend, security
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100