我有一个用Java开发的Rest API。我正在使用枚举作为我的请求参数,让我们说性别是枚举之一,并说性别的可能值是 M,F 我知道请求参数是用户控制的。声纳抱怨它被污染了,我需要对输入进行消毒。
我不明白枚举是如何被污染的,以及为什么它会带来风险。我们不能将任何随机值传递给枚举。
期待您的建议。
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
}
枚举的任何错误值都会给你HTTP 400错误请求,这完全没问题。
我在声纳论坛上问过同样的问题
上述枚举问题将在声纳的未来版本中修复。一旦我得到更多信息,我会在这里发表评论。
枚举问题 - 来自声纳源的回复