一、前言
源代码审计,顾名思义就是检查源代码中是否存在安全隐患,使用自动化工具以及人工的方式对源代码进行分析检查,发现源代码的这些缺陷引起的漏洞,并提供修复措施和建议。
在开始之前,我们先了解一下MVC设计模式的基本概念:
MVC:全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写。其中:
Model(模型)一般用于放置对数据库进行存取等操作的代码
View(视图)一般用于放置静态资源如前端代码、css等
Controller(控制器)用于存放接受用户输入和业务逻辑处理的代码。
我们以Java的SpringMVC来举例,SpringBoot项目的三层架构如下:
Model层:包含service层和dao层
Service层用来实现业务逻辑
Dao层的作用是封装对数据库的访问:增删改查,不涉及业务逻辑
Controller层:负责业务模块的流程控制
View层:html、css、js等等
过程如下:

有了这些知识之后,我们就可以大致定位到文件位置了。
二、代码审计的方法
下面我们来介绍三种常用的代码审计的方式:
| 全文通读 |
敏感函数溯源 |
功能点定向审计 |
|
| 说明 |
从系统入口开始审计,分析所有数据流走向。 |
搜索敏感函数,逆向追踪参数的传递过程,分析参数是否可控。 |
定位敏感功能点,分析其是否存在安全缺陷。 |
| 优点 |
能够覆盖所有请求入口,避免了遗漏代码的情况。 |
高效。 |

本文介绍了源代码审计的重要性和基本概念,详细讲解了MVC设计模式,并以Java的SpringMVC为例说明。文章阐述了人工审计与工具辅助审计的方法,包括Fortify、Checkmax、CodeQL、Semgrep和SonarQube等工具的特点和应用场景。着重讨论了开源工具Semgrep的优缺点及其使用示例,展示其在数据流跟踪能力上的局限性,并预告了后续将探讨的codeql和SonarQube工具。
最低0.47元/天 解锁文章
3498

被折叠的 条评论
为什么被折叠?



