代码审计之C#项目【1】
本篇写的略粗糙,大家如感兴趣可略看一二。0-0
C#语言介绍
C#一般是使用在游戏项目里居多,它可以写web后端也可以做小程序。这几年生态圈发展得还行。也有一部分asp项目是使用C#语言编写的。
C#这个语言语法我个人认为接近于50%java,30%c++/c。语法稍微有点点混杂。C#里一般是通过创建各种类来编写代码。
比如说它居然有预编译指令 可以直接在代码里用。如#define 和 #undef等指令
基于C# ASP.NET项目结构介绍
一般来说,这种WEB项目会使用MVC结构,model,controll,view。
model层是编写各种数据模型或数据库与数据实体类之间的交互处理,如下就是一个简单的数据模型
controll层是做路由响应以及相应的业务逻辑处理。类的名字以Controller结尾。
响应针对 ASP.NET MVC 网站发出的请求。每个浏览器请求都映射到特定的控制器 。如访问http://localhost/Product/Index/3 它就会去寻找Product controller然后在Product Controller里找Index方法
控制器可能会将特定视图返回回浏览器,或者控制器可能会将用户重定向到另一个控制器。
view层一般是显示页面代码,或传递数据
普通页面则以cshtml结尾
过滤器:(Filter),一般来说提供了在asp.net MVC与asp.net webApi的两处过滤操作处理,主要分四类过滤器IAuthorizationFilter(授权过滤器)、IActionFilter(Action方法过滤器)、IResultFilter(ActionResult方法返回结果)、IExceptionFilter(异常过滤器)
过滤器的单独使用:在需要使用的控制器或者操作action前面加上[xxfilter]
过滤器全局使用:
在webapi中是在WebApiConfig中添加config.Filters.Add(new xxxxx);
在mvc项目中是在App_Start目录下FilterConfig中添加 filters.Add(new xxxx());通过注册到Global.asax注册为全局 过滤所有action
基于C# ASP.NET项目权限校验
一般是使用上面提到的过滤器进行权限校验。编写权限过滤器继承AuthorizeFilter来实现各种功能权限验证和授权,然后在需要进行权限校验的控制器前添加[Authorize]就会进行权限校验
[AllowAnonymous] 绕过所有授权语句。
如果将 [AllowAnonymous] 和任何 [Authorize] 属性结合使用,系统将忽略 [Authorize] 属性。例如,如果在控制器级别应用 [AllowAnonymous] ,则忽略同一控制器 (或其中的任何操作上的任何 [Authorize] 属性) 。
基于C# ASP.NET项目需要工具
因为一部分代码编译成dll文件,所以这部分代码需要反编译,可使用
Net Reflector 【收费】 ILSpy/dnSpy 【免费】 JetBrains dotPeek【免费】 Telerik JustDecompile
基于C# ASP.NET项目引用的框架/组件
引用第三方组件一般使用NuGet类库(网上其他人共享的类库文件)
数据库:
Entity Framework (EF)微软官方提供的ORM工具 Dapper 一个轻型的ORM类。
参考:
https://blog.csdn.net/kongwei521/article/details/54927689 https://learn.microsoft.com/zh-cn/aspnet/core/security/authorization/simple?view=aspnetcore-7.0
https://blog.csdn.net/qq_42735982/article/details/105707692
https://blog.csdn.net/pan_junbiao/article/details/84523935