enums - 声纳污染分析: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,这非常好。
解决方案
上述枚举问题将在声纳的未来版本中修复。一旦我得到更多信息,我会在这里发表评论。
推荐阅读
- angular - 您可能需要适当的加载程序来处理这种文件类型 asp.net core2.0 angular
- python - 将列表转换为 Pandas 系列时出现 KeyError
- performance - 为什么 DigitalOcean 使用 uuid 作为用户 ID,使用整数作为 Droplet id?
- windows - 为什么在 Windows 10 上运行 docker 时,bash 中的字符串末尾会添加“;C”?
- c# - 当有特殊名称的名称时,如何通过 Json.net 解析 JSON 数据?
- charts - 谷歌时间轴图表中的双第一列
- python - python脚本不起作用,但在控制台上逐行是
- c# - 行动
用作参数 - powershell - PowerShell XAML 列表框 Add_DoubleClick
- android - Android 上的 WiFi/蓝牙。已知网络/设备的连接历史。