CS.AUTH.NOATTR

可能缺少授权检查

CS.AUTH.NOATTR 检查器会标记未使用 [Authorize] 或 [AllowAnonymous] 属性来执行授权检查的 ASP.NET 控制器/页面模型。

漏洞与风险

代码不应用访问控制检查时,用户可以访问数据或执行不允许的操作。这可能会导致各种问题,包括信息暴露、拒绝服务和任意代码执行。

漏洞代码示例

复制
  using System;
  using System.Web;
  using System.Web.Mvc;public class AdministrationController : Controller
  {
      public ActionResult ViewSensitiveInformation() { }
  }

在此示例中,AdministrationController 不具备 [Authorize] 属性,因此任何用户都可能调用其操作 ViewSensitiveInformation。

修正代码示例 1

复制
  using System;
  using System.Web;
  using System.Web.Mvc;
   
  [Authorize(Roles = "Administrator")]
  public class AdministrationController : Controller
  {
      public ActionResult ViewSensitiveInformation() { }
  }

添加 [Authorize] 属性后,只有具有管理权限的用户才能访问由 ViewSensitiveInformation 返回的信息。

修正代码示例 2

复制
  using System;
  using System.Web;
  using System.Web.Mvc;
   
  public class AdministrationController : Controller
  {
      [Authorize(Roles = "Administrator")]
      public ActionResult ViewSensitiveInformation() { }
  }

添加 [Authorize] 属性后,只有具有管理权限的用户才能访问由 ViewSensitiveInformation 返回的信息。