xiao1star2026-04-22文章来源:SecHub网络安全社区
这种是最常见的,就是在父类中写上鉴权方法,子类直接继承父类实现鉴权
例如如下代码其继承了page类,这个Page是我们系统自带的是没有鉴权功能的


我们看其他有鉴权的页面,例如如下AboutNewDi类是继承了BasePage类

可以看到这个类中的OnInit方法中设置了获取Session、token这些值,这一看就是有鉴权的

这种鉴权方式一般是在web.config中用authentication 标签包裹使用的,同时指定模式为Forms
<authentication mode="Forms">
<forms loginUrl="~/About.aspx" defaultUrl="~/Default.aspx" timeout="30" />
</authentication>
<authorization>
<allow users="*"/>
<!--允许任何访问者访问-->
</authorization>

如上图所示我们指定了LolginUrl为About.aspx页面,登录成功后就跳转到了Default.aspx页面,同时要注意<allow users="*"/>表示允许任何访问者访问,<deny users="?"/>禁止匿名用户访问
输入正确的账号密码

成功来到default页面

使用注解的形式在Contorller的方法中加上[Authorize][AllowAnonymous],来表示该路由是否进行鉴权操作,但要注意这个注解是可以是其他的命名
如下我们使用的是,net8创建的MVC框架,可以看到我们的路由是Program.cs页面中的
可以看到我们在代码中添加了如下代码来进行鉴权,当未登录时就直接重定向到/home/User路径下
app.UseAuthentication(); //鉴权操作
// Add services to the container.
builder.Services.AddControllersWithViews();
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.LoginPath = "/Home/User"; // 未登录时的重定向路径
options.AccessDeniedPath = "/Home/Error"; // 无权限时的重定向路径
});

可以看到在我们的HomeController类中使用[Authorize]对整个类进行了鉴权操作,对部分方法使用AllowAnonymous允许匿名访问

当我们未登录时直接来到登录页面

当登录成功后成功跳转到index页面


在审计的时候,可以先看看先看看该类的父类有没有鉴权代码如果没有再去web.config看看有没有相应的authentication 标签,但是要注意有时候我们代码审计的源码只有bin文件,而没有web.config文件的,然后再去看看是不是那种注解的鉴权方式