针对MVC5的CWE-ID 100修复

时间:2017-06-07 16:11:38

标签: c# asp.net-mvc asp.net-mvc-5 veracode

我们的应用程序正在遭遇数百次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

有没有人遇到过这个?

1 个答案:

答案 0 :(得分:4)

我自己一直在处理这件事。基本的罪魁祸首是你没有为你的参数设置[Bind],指定允许的属性。

我的旧登录控制器操作就像这样

public ActionResult SignIn(SignInViewModel viewModel)

要纠正它,我需要它像这样阅读

public ActionResult SignIn([Bind(Include = "Email,Password,UtcOffset")]SignInViewModel viewModel)

这对MVC说的只是EmailPasswordUtcOffset属性将从SignInViewModel读取,所以如果黑客也设置了LastLogonTime它会被忽略。

顺便说一句,由于Veracode的安全检查,我认为这种模型绑定现在非常尴尬,因为开发人员现在必须保持字符串与目标上的道具名称同步。真是个麻烦。