针对MVC5的CWE-ID 100修复

mit*_*w16 6 c# asp.net-mvc veracode asp.net-mvc-5

根据Veracode的说法,我们的应用程序正在遭遇与技术特定输入验证问题相关的数百次CWE-ID 100"缺陷" .

根据他们的文档,修复是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();
    }
}
Run Code Online (Sandbox Code Playgroud)

我们有System.ComponentModel.DataAnnotations我们的模型属性.

有没有人见过这个?

Tod*_*ang 5

我自己一直在处理这个问题。罪魁祸首是您没有在参数上设置[Bind],而是指定了允许的属性。

我以前的登录控制器操作是这样的

public ActionResult SignIn(SignInViewModel viewModel)

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

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

这对MVC所说的只是属性EmailPassword并且UtcOffset将从中读取SignInViewModel,因此,如果黑客还设置了属性,LastLogonTime它将被忽略。

顺便说一句,由于来自Veracode的安全性检查,我认为这种模型绑定现在令人难以置信,考虑到开发人员现在必须使字符串与目标处的prop名称保持同步。真麻烦