查看原文
编程

代码审计之C#项目【1】

Alpha 天才少女Alpha 2023-06-24

本篇写的略粗糙,大家如感兴趣可略看一二。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


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存