首页 > 解决方案 > 声纳污染分析:javasecurity:S5131:强制清理 Java 枚举:

问题描述

我有一个用 Java 开发的 Rest API。我使用 Enums 作为我的请求参数,可以说 Gender 是 Enum 之一,并说 Gender 的可能值是 M,F 我知道 requestParametrs 是用户控制的。Sonar 抱怨它被污染了,我需要清理输入。

我无法理解枚举是如何被污染的以及为什么它会构成风险。我们不能将任何随机值传递给枚举。

期待您的建议。

public ResponseEntity<String> answers(
                      @RequestParam(value = "genderId", required = true) 
                      GenderEnum genderId) { // genderID is tainted as its controlled by User input


 SomeObject param = new SomeObject();
 param.setGenderId(genderId); //Polluted too, as requestParam is not sanitized

 //Lets assume you make some call to DB
  String result=dbCall(genderId);   //This is tainted too

   return "Hello"+genderId; //Result is also tainted as its also using Non-santized input

}

Enum 的任何错误值都会为您提供HTTP 400 Bad Request,这非常好。

我在 sonarForum 上问过同样的问题

标签: enumssonarqubetaint

解决方案


上述枚举问题将在声纳的未来版本中修复。一旦我得到更多信息,我会在这里发表评论。

枚举问题 - Sonarsource 的回复


推荐阅读