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 返回的信息。