我有一个用 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,这非常好。