【问题标题】:Security tool scan issue, Found reliance on default encoding: new String(byte[])安全工具扫描问题,发现依赖默认编码:new String(byte[])
【发布时间】:2020-12-24 02:40:55
【问题描述】:

我得到以下代码的“发现对默认编码的依赖:new String(byte[])”

InitAuth (Auth auth) {
        String jsonString =String(Base64.getDecoder().decode(token.split(".")[1]));
        context = JsonPath.parse(jsonString);
}

我找到了建议以这种格式使用字符串构造函数的解决方案

new String(bytes, StandardCharsets.UTF_8)

但问题是,在我的代码中,如果我使用第二个参数,它会变成这个签名

new String(string, string)

正如你所知,这个构造函数不是为 new String() 定义的。所以有人可以建议如何解决问题。如果在此处使用 Base64.getMimeDecoder() 有意义,请添加。

【问题讨论】:

  • “在我的代码中,如果我使用第二个参数,它将变成这个签名”是什么意思?那没有意义。这个建议是正确的。

标签: java coverity


【解决方案1】:
String payloadUTF8 = new String(jsonString.getBytes(),StandardCharsets.UTF_8);
context = JsonPath.parse(payloadUTF8);

为了调用Stringconstructor,第一个参数必须是byte[]。将.getBytes() 的结果作为第一个参数传递,然后您可以将StandardCharsets.UTF_8 设置为第二个参数。

【讨论】:

  • 我的问题中的第一个参数已经以 bytes[] 格式出现,但是如果我们有一个字符串作为第一个参数,那么这将起作用
猜你喜欢
  • 1970-01-01
  • 2012-05-08
  • 2021-01-29
  • 1970-01-01
  • 2015-07-08
  • 2018-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多