我们的应用程序正在遭遇数百次CWE-ID 100"缺陷"与Veracode相关的技术特定输入验证问题。
根据他们的文档,修复是在使用之前检查模型上的ModelState.IsValid
属性。我们在每个控制器动作上执行此操作,但我们仍然没有动作。以下是控制器动作示例。
public async Task<ActionResult> DeliverySummary (ReportsViewModel Model)
{
if (ModelState.IsValid)
{
/* Other processing occurs here */
//finally return View
return View(Model);
}
else
{
return View();
}
}
我们的模型属性上有System.ComponentModel.DataAnnotations
。
有没有人遇到过这个?
答案 0 :(得分:4)
我自己一直在处理这件事。基本的罪魁祸首是你没有为你的参数设置[Bind],指定允许的属性。
我的旧登录控制器操作就像这样
public ActionResult SignIn(SignInViewModel viewModel)
要纠正它,我需要它像这样阅读
public ActionResult SignIn([Bind(Include = "Email,Password,UtcOffset")]SignInViewModel viewModel)
这对MVC说的只是Email
,Password
和UtcOffset
属性将从SignInViewModel
读取,所以如果黑客也设置了LastLogonTime
它会被忽略。
顺便说一句,由于Veracode的安全检查,我认为这种模型绑定现在非常尴尬,因为开发人员现在必须保持字符串与目标上的道具名称同步。真是个麻烦。