c# - MVC5 的 CWE-ID 100 修复

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

根据 Veracode,与技术特定输入验证问题相关的 CWE-ID 100“缺陷”使我们的应用程序出现了数百次。

根据他们的文档,补救措施是在使用模型之前检查模型的 ModelState.IsValid 属性。我们在每个 Controller Action 上都这样做,但我们仍然有问题。下面是一个示例 Controller 操作。

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

有人遇到过这种情况吗?

最佳答案

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

我的旧登录 Controller 操作是这样的

public ActionResult SignIn(SignInViewModel viewModel)

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

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

这对 MVC 来说只是属性 EmailPasswordUtcOffset 将从 SignInViewModel 中读取,因此如果黑客还设置了 LastLogonTime,它将被忽略。

顺便说一句,由于 Veracode 的安全检查,我认为这种模型绑定(bind)现在非常尴尬,考虑到开发人员现在必须使字符串与目标的 prop 名称保持同步。真麻烦。

关于c# - MVC5 的 CWE-ID 100 修复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44417855/

相关文章:

c# - MVC5和EF6.1.3脚手架问题

asp.net-mvc-5 - 同一域中的 Web API 2 项目和 MVC 5 网站项目

c# - 如何在线条图中找到圆弧或开放曲线?

c# - 这个 while 循环中发生了什么?

javascript - 如何从文件夹项目 ASP.NET 中读取 JSON 文件

asp.net-mvc - 在脚手架标识后禁用预构建的 Razor UI 页面

c# - NetworkStream.Write数据似乎没有到达接收套接字

c# - 在 IIS 上运行 Windows 服务

asp.net - .Net MVC线程长时间运行的过程

c# - Facebook 的社交登录在 ASP.Net MVC 5 项目中不起作用