代码审计入门:先搞清楚我们在审什么、用什么审
代码审计是站在开发者肩上看代码里埋了哪些雷。这篇讲清白盒审计的定位、三种主流审计思路、PHP 与 Java 各自的运行与调试环境,以及 Seay、RIPS、CodeQL 等工具的取舍,帮你把"看源码找漏洞"这件看上去很玄的事拆成可上手的动作。
网络安全 · 共 10 篇
代码审计是站在开发者肩上看代码里埋了哪些雷。这篇讲清白盒审计的定位、三种主流审计思路、PHP 与 Java 各自的运行与调试环境,以及 Seay、RIPS、CodeQL 等工具的取舍,帮你把"看源码找漏洞"这件看上去很玄的事拆成可上手的动作。
PHP 因为历史包袱重、弱类型、函数众多,是代码审计的高产战场。这篇系统梳理 PHP 里的命令执行、代码执行、文件包含、文件操作、SQL 注入、变量覆盖、反序列化等危险函数与典型漏洞模式,并讲清弱类型比较、魔术方法这些最容易让人栽跟头的语言特性。
ThinkPHP 是国内用得最广的 PHP 框架,也是审计高频目标。这篇讲清它的路由解析、控制器调度、SQL 构造、模板引擎的运作方式,并复盘版本差异导致的 RCE、SQL 注入、变量覆盖等经典漏洞,给出一套可复用的 ThinkPHP 审计路线。
框架层面的洞打完,真正的业务系统里更致命的往往是逻辑漏洞。这篇用贴近真实的 PHP 案例,讲清水平越权、垂直越权、支付金额篡改、验证码/Token 绕过、接口未授权访问等高频逻辑缺陷,以及审计时怎么顺着"身份—权限—关键操作"这条链去挖。
手工搜危险函数效率有限,成熟的 PHP 审计离不开工具链。这篇系统讲清 Seay 源代码审计系统、Fortify、RIPS、Cobra、Semgrep、Progpilot 这些静态分析工具的定位与用法,PHPStan/Psalm 这类类型分析怎么辅助审计,以及 Xdebug 动态调试、D 盾/河马查后门的实战组合,帮你搭出一套自己的 PHP 审计流水线。
Java 审计和 PHP 最大的不同,是它有一套漫长的调用链和复杂的生态。这篇讲清 Java Web 的请求生命周期、Servlet/Filter/Interceptor 的职责、Spring 的注解路由,以及 Java 里那些危险 API 和反序列化基础,帮你在审计前建立"请求从哪进、到哪出"的全局地图。
Spring Boot / Spring MVC 是国内 Java Web 的绝对主流。这篇讲清它的注解式路由、参数绑定、SpEL 表达式、模板渲染(SSTI)、鉴权注解(@PreAuthorize)、Actuator 端点等审计要点,并复盘 Spring4Shell、SPEL 注入、权限注解绕过等经典漏洞,给出 Spring 审计的落地路线。
Java 安全圈最出圈的漏洞几乎都和反序列化、组件有关。这篇系统梳理原生反序列化与 CommonsCollections 利用链、Fastjson 的 autotype 绕过、Jackson 多态反序列化、Log4j2 的 JNDI 注入(Log4Shell),以及 Shiro 的 rememberMe 反序列化,讲清原理、审计点和修复。
Java 生态复杂、调用链长,单靠肉眼追链效率太低。这篇系统讲清 Java 审计的工具矩阵:以 IDEA 为核心的手工审计、CodeQL 的语义化查询、Tabby/gadgetinspector 自动挖反序列化链、SpotBugs+FindSecBugs 字节码扫描、Dependency-Check/Snyk 组件 CVE 扫描、JADX 等反编译器,以及 Arthas 线上诊断,帮你把 Java 审计从体力活升级为流水线。
审出漏洞只是上半场,把发现讲清楚、给出能落地的修复,才是闭环。这篇讲怎么组织一份代码审计报告:漏洞分级、复现步骤、影响面、精准的修复建议,以及如何和开发协作把问题真正修掉,而不是丢一句"有漏洞"就完事。