Java代码审计进阶指南:从基础理论到实战应用的全面学习路径
一、引言
- 背景介绍
- 随着互联网技术的飞速发展,Java作为全球最广泛使用的编程语言之一,其安全性问题日益受到关注。Java代码审计是保障Java应用安全的关键环节,通过审计可以发现代码中的漏洞和缺陷,从而有效降低安全风险。
- 学习意义
- 对于开发人员来说,掌握代码审计技能有助于编写更安全、更可靠的代码;对于安全人员来说,这是发现和修复漏洞的重要手段;对于企业来说,这是保障业务安全运行的重要保障。
二、前置知识储备
(一)Java基础
- Java语法
- 掌握基本语法,包括变量声明、数据类型、控制结构(如if-else、for循环、while循环)等。
- 熟悉Java的运算符和表达式,理解优先级和结合性。
- 学习如何定义和使用方法(函数),包括参数传递、返回值等。
- 面向对象编程(OOP)
- 理解类和对象的概念,掌握如何定义类、创建对象。
- 学习继承、封装、多态三大特性,理解它们在Java中的实现方式和应用场景。
- 掌握接口和抽象类的使用,了解它们的区别和联系。
- 熟悉常见的设计模式(如单例模式、工厂模式、策略模式等),理解其在实际开发中的应用。
- 异常处理
- 了解Java异常处理机制,包括try-catch-finally块的使用。
- 学习如何抛出自定义异常,掌握异常的分类(运行时异常和非运行时异常)。
- 理解异常处理的最佳实践,避免因异常处理不当导致的安全问题。
- 集合框架
- 掌握Java集合框架的基本概念,包括List、Set、Map等接口及其常用实现类(如ArrayList、LinkedList、HashSet、HashMap等)。
- 学习集合的常用操作,如添加、删除、遍历等。
- 理解集合的线程安全问题,掌握如何使用线程安全的集合(如Vector、ConcurrentHashMap等)。
- IO操作
- 学习Java IO的基本概念,包括输入流(InputStream)和输出流(OutputStream)。
- 掌握文件操作,如文件的读写、复制、删除等。
- 了解字符流(Reader和Writer)与字节流的区别和联系。
- 学习序列化和反序列化机制,掌握如何实现对象的序列化和反序列化。
(二)Java EE生态
- Servlet/JSP
- 了解Servlet的基本概念,掌握Servlet的生命周期(初始化、服务、销毁)。
- 学习如何创建和配置Servlet,包括使用注解和web.xml文件。
- 理解JSP的工作原理,掌握JSP的基本语法(如表达式、脚本片段、指令等)。
- 学习JSP内置对象(如request、response、session、application等)的使用。
- 掌握JSP与Servlet的交互方式,理解MVC架构在Web应用中的应用。
- Spring框架
- Spring Core
- 理解Spring框架的核心概念,如依赖注入(DI)和控制反转(IoC)。
- 学习Spring Bean的生命周期,掌握Bean的定义、初始化、销毁等过程。
- 掌握Spring的配置方式,包括XML配置、注解配置和Java配置。
- 理解AOP(面向切面编程)的基本概念,掌握如何使用AOP实现日志记录、事务管理等功能。
- Spring MVC
- 了解Spring MVC的工作原理,掌握Controller的定义和使用。
- 学习如何处理HTTP请求,包括请求映射(@RequestMapping)、参数绑定、视图解析等。
- 掌握Spring MVC中的数据校验机制,了解如何使用Hibernate Validator进行参数校验。
- 理解Spring MVC中的异常处理机制,掌握如何定义全局异常处理器。
- Spring Security
- 学习Spring Security的基本概念,包括认证(Authentication)和授权(Authorization)。
- 掌握Spring Security的配置方式,包括用户认证(如用户名/密码认证、OAuth2认证等)、权限控制(如基于角色的权限控制、基于方法的权限控制等)。
- 了解Spring Security的常见安全机制,如CSRF保护、密码加密存储等。
- Hibernate/MyBatis
- Hibernate
- 了解Hibernate的基本概念,掌握Hibernate的ORM(对象关系映射)机制。
- 学习Hibernate的配置方式,包括hibernate.cfg.xml文件和注解配置。
- 掌握Hibernate的Session和Transaction的使用,理解Hibernate的缓存机制(一级缓存、二级缓存)。
- 学习Hibernate的查询语言(HQL),掌握如何使用HQL进行数据查询。
- MyBatis
- 了解MyBatis的基本概念,掌握MyBatis的Mapper接口和Mapper XML文件的使用。
- 学习MyBatis的配置方式,包括mybatis-config.xml文件和注解配置。
- 掌握MyBatis的SQL语句编写,理解MyBatis的动态SQL功能。
- 了解MyBatis与Spring的集成方式,掌握如何在Spring项目中使用MyBatis。
(三)安全基础
- OWASP Top 10漏洞
- SQL注入
- 了解SQL注入的原理,掌握如何通过用户输入构造恶意SQL语句。
- 学习SQL注入的类型(如经典注入、盲注、时间盲注等)。
- 掌握SQL注入的防御方法,如使用预编译语句(PreparedStatement)、参数化查询等。
- 跨站脚本攻击(XSS)
- 理解XSS的原理,掌握如何通过用户输入向网页中注入恶意脚本。
- 学习XSS的类型(如存储型XSS、反射型XSS、DOM型XSS等)。
- 掌握XSS的防御方法,如对用户输入进行编码、设置HttpOnly和Secure属性等。
- 跨站请求伪造(CSRF)
- 了解CSRF的原理,掌握如何通过伪造用户请求进行恶意操作。
- 学习CSRF的防御方法,如使用Token验证、检查Referer头等。
- 不安全的反序列化
- 理解反序列化的原理,掌握如何通过恶意反序列化数据触发漏洞。
- 学习常见的反序列化漏洞(如Java的ObjectInputStream漏洞、Fastjson漏洞等)。
- 掌握反序列化的防御方法,如限制反序列化类型、使用安全的反序列化库等。
- 失效的身份认证和会话管理
- 了解身份认证和会话管理的基本概念,掌握常见的身份认证方式(如用户名/密码认证、OAuth2认证等)。
- 学习会话管理的常见问题(如会话固定攻击、会话劫持等)。
- 掌握身份认证和会话管理的防御方法,如使用强密码策略、设置会话超时、使用HTTPS等。
- 敏感数据泄露
- 了解敏感数据的类型(如用户密码、信用卡信息、个人隐私等)。
- 学习敏感数据泄露的常见原因(如不安全的存储、不安全的传输等)。
- 掌握敏感数据泄露的防御方法,如对敏感数据进行加密存储、使用HTTPS传输等。
- XML外部实体(XXE)
- 了解XXE的原理,掌握如何通过恶意XML文档触发漏洞。
- 学***E的防御方法,如禁用外部实体、使用安全的XML解析库等。
- 使用含有已知漏洞的组件
- 了解组件漏洞的概念,掌握如何识别和修复组件漏洞。
- 学习常见的组件漏洞(如Log4j2漏洞、Apache Commons Collections漏洞等)。
- 掌握组件漏洞的防御方法,如及时更新组件版本、使用安全的组件库等。
- 不安全的反向代理
- 了解反向代理的基本概念,掌握常见的反向代理配置问题。
- 学习不安全反向代理的防御方法,如配置安全的反向代理规则、限制访问等。
- 服务器端请求伪造(SSRF)
- 了解SSRF的原理,掌握如何通过服务器端发起恶意请求。
- 学习SSRF的防御方法,如限制请求来源、使用安全的请求库等。
- 常见Java漏洞模式
- Fastjson漏洞
- 了解Fastjson的基本概念,掌握其反序列化机制。
- 学习Fastjson漏洞的原理,如通过恶意JSON数据触发漏洞。
- 掌握Fastjson漏洞的防御方法,如使用安全的反序列化库、限制反序列化类型等。
- Log4j2 RCE漏洞
- 了解Log4j2的基本概念,掌握其日志记录机制。
- 学习Log4j2 RCE漏洞的原理,如通过恶意日志数据触发漏洞。
- 掌握Log4j2 RCE漏洞的防御方法,如升级到安全版本、限制日志内容等。
- Spring Cloud Gateway SPEL表达式注入漏洞
- 了解Spring Cloud Gateway的基本概念,掌握其路由和过滤机制。
- 学习SPEL表达式注入漏洞的原理,如通过恶意路由配置触发漏洞。
- 掌握SPEL表达式注入漏洞的防御方法,如限制表达式使用、使用安全的路由配置等。
(四)工具使用
- 静态分析工具
- Find Security Bugs
- 了解Find Security Bugs的基本功能,掌握其使用方法。
- 学习如何通过Find Security Bugs检测Java代码中的安全漏洞。
- 掌握如何配置Find Security Bugs,以适应不同的项目需求。
- Fortify
- 了解Fortify的基本功能,掌握其使用方法。
- 学习如何通过Fortify检测Java代码中的安全漏洞。
- 掌握如何解读Fortify的扫描结果,理解漏洞的严重性和修复建议。
- SonarQube
- 了解SonarQube的基本功能,掌握其使用方法。
- 学习如何通过SonarQube检测Java代码中的质量问题(如代码规范、性能问题等)。
- 掌握如何配置SonarQube,以适应不同的项目需求。
- 动态调试工具
- IDEA/Eclipse调试器
- 了解IDEA/Eclipse调试器的基本功能,掌握其使用方法。
- 学习如何通过调试器定位代码中的问题(如变量值异常、逻辑错误等)。
- 掌握如何使用调试器的断点、单步执行、变量查看等功能。
- Burp Suite
- 了解Burp Suite的基本功能,掌握其使用方法。
- 学习如何通过Burp Suite进行Web应用的安全测试(如SQL注入测试、XSS测试等)。
- 掌握如何使用Burp Suite的代理、扫描、重放等功能。
- JD-GUI(反编译)
- 了解JD-GUI的基本功能,掌握其使用方法。
- 学习如何通过JD-GUI反编译Java字节码文件,查看源代码。
- 掌握如何使用JD-GUI进行代码分析和调试。
三、核心学习内容
(一)漏洞类型与代码特征
- 输入校验漏洞
- SQL注入
- 了解SQL注入的代码特征,如直接拼接用户输入到SQL语句中。
- 学习如何通过代码审计发现SQL注入漏洞,如检查是否使用了预编译语句。
- 掌握SQL注入的修复方法,如使用PreparedStatement、参数化查询等。
- 命令注入
- 了解命令注入的代码特征,如直接拼接用户输入到系统命令中。
- 学习如何通过代码审计发现命令注入漏洞,如检查是否对用户输入进行了过滤和转义。
- 掌握命令注入的修复方法,如使用安全的命令执行库、限制命令执行权限等。
- XSS
- 了解XSS的代码特征,如直接将用户输入输出到HTML页面中。
- 学习如何通过代码审计发现XSS漏洞,如检查是否对用户输入进行了编码。
- 掌握XSS的修复方法,如对用户输入进行HTML编码、设置HttpOnly和Secure属性等。
- 反序列化漏洞
- ObjectInputStream
- 了解ObjectInputStream的基本概念,掌握其反序列化机制。
- 学习如何通过代码审计发现ObjectInputStream反序列化漏洞,如检查是否限制了反序列化类型。
- 掌握ObjectInputStream反序列化漏洞的修复方法,如使用安全的反序列化库、限制反序列化类型等。
- Fastjson
- 了解Fastjson的基本概念,掌握其反序列化机制。
- 学习如何通过代码审计发现Fastjson反序列化漏洞,如检查是否限制了反序列化类型。
- 掌握Fastjson反序列化漏洞的修复方法,如使用安全的反序列化库、限制反序列化类型等。
- Gson
- 了解Gson的基本概念,掌握其反序列化机制。
- 学习如何通过代码审计发现Gson反序列化漏洞,如检查是否限制了反序列化类型。
- 掌握Gson反序列化漏洞的修复方法,如使用安全的反序列化库、限制反序列化类型等。
- XStream
- 了解XStream的基本概念,掌握其反序列化机制。
- 学习如何通过代码审计发现XStream反序列化漏洞,如检查是否限制了反序列化类型。
- 掌握XStream反序列化漏洞的修复方法,如使用安全的反序列化库、限制反序列化类型等。
- 权限控制漏洞
- Spring Security配置错误
- 了解Spring Security的基本概念,掌握其配置方式。
- 学习如何通过代码审计发现Spring Security配置错误,如检查是否正确配置了用户认证和授权。
- 掌握Spring Security配置错误的修复方法,如正确配置用户认证和授权、使用安全的认证方式等。
- 越权访问
- 了解越权访问的基本概念,掌握其类型(如水平越权、垂直越权)。
- 学习如何通过代码审计发现越权访问漏洞,如检查是否正确实现了权限控制。
- 掌握越权访问漏洞的修复方法,如正确实现权限控制、限制用户访问范围等。
- 依赖组件漏洞
- Log4j2
- 了解Log4j2的基本概念,掌握其日志记录机制。
- 学习如何通过代码审计发现Log4j2漏洞,如检查是否使用了安全版本。
- 掌握Log4j2漏洞的修复方法,如升级到安全版本、限制日志内容等。
- Apache Commons Collections
- 了解Apache Commons Collections的基本概念,掌握其使用方式。
- 学习如何通过代码审计发现Apache Commons Collections漏洞,如检查是否限制了反序列化类型。
- 掌握Apache Commons Collections漏洞的修复方法,如使用安全的反序列化库、限制反序列化类型等。
- 逻辑漏洞
- 支付绕过
- 了解支付绕过的基本概念,掌握其原理。
- 学习如何通过代码审计发现支付绕过漏洞,如检查是否正确实现了支付逻辑。
- 掌握支付绕过漏洞的修复方法,如正确实现支付逻辑、限制用户操作等。
- 密码重置逻辑错误
- 了解密码重置逻辑错误的基本概念,掌握其原理。
- 学习如何通过代码审计发现密码重置逻辑错误漏洞,如检查是否正确实现了密码重置逻辑。
- 掌握密码重置逻辑错误漏洞的修复方法,如正确实现密码重置逻辑、限制用户操作等。
(二)框架安全
- Spring Security
- CSRF保护
- 了解CSRF保护的基本概念,掌握其原理。
- 学习如何通过代码审计发现Spring Security CSRF保护问题,如检查是否正确配置了CSRF保护。
- 掌握Spring Security CSRF保护的修复方法,如正确配置CSRF保护、使用安全的请求方式等。
- 用户认证和授权
- 了解用户认证和授权的基本概念,掌握其原理。
- 学习如何通过代码审计发现Spring Security用户认证和授权问题,如检查是否正确配置了用户认证和授权。
- 掌握Spring Security用户认证和授权的修复方法,如正确配置用户认证和授权、使用安全的认证方式等。
- Struts2
- OGNL表达式注入
- 了解OGNL表达式注入的基本概念,掌握其原理。
- 学习如何通过代码审计发现Struts2 OGNL表达式注入漏洞,如检查是否正确处理了用户输入。
- 掌握Struts2 OGNL表达式注入漏洞的修复方法,如使用安全的表达式解析库、限制用户输入等。
- JPA/Hibernate
- SQL注入
- 了解JPA/Hibernate的SQL注入问题,掌握其原理。
- 学习如何通过代码审计发现JPA/Hibernate SQL注入漏洞,如检查是否正确使用了HQL或JPQL。
- 掌握JPA/Hibernate SQL注入漏洞的修复方法,如使用预编译语句、参数化查询等。
四、学习步骤
(一)学习安全编码规范
- 阅读《Java安全编码标准》(CERT Oracle Secure Coding Standard for Java)
- 了解Java安全编码的基本规范,掌握其内容和要求。
- 学习如何在实际开发中应用这些规范,编写安全可靠的代码。
- 学习《Java安全编码指南》(OWASP Java Security Coding Guide)
- 了解OWASP的安全编码指南,掌握其内容和要求。
- 学习如何在实际开发中应用这些指南,编写安全可靠的代码。
- 学习《Java安全编码最佳实践》(OWASP Java Security Best Practices)
- 了解OWASP的安全编码最佳实践,掌握其内容和要求。
- 学习如何在实际开发中应用这些最佳实践,编写安全可靠的代码。
(二)分析漏洞案例
- 复现经典Java漏洞
- Fastjson反序列化漏洞
- 了解Fastjson反序列化漏洞的原理,掌握其复现方法。
- 学习如何通过代码复现Fastjson反序列化漏洞,理解其危害。
- 掌握Fastjson反序列化漏洞的修复方法,如使用安全的反序列化库、限制反序列化类型等。
- Log4j2 RCE漏洞
- 了解Log4j2 RCE漏洞的原理,掌握其复现方法。
- 学习如何通过代码复现Log4j2 RCE漏洞,理解其危害。
- 掌握Log4j2 RCE漏洞的修复方法,如升级到安全版本、限制日志内容等。
- Spring Cloud Gateway SPEL表达式注入漏洞
- 了解Spring Cloud Gateway SPEL表达式注入漏洞的原理,掌握其复现方法。
- 学习如何通过代码复现Spring Cloud Gateway SPEL表达式注入漏洞,理解其危害。
- 掌握Spring Cloud Gateway SPEL表达式注入漏洞的修复方法,如限制表达式使用、使用安全的路由配置等。
- 分析漏洞案例
- SQL注入案例
- 了解SQL注入案例的背景和原因,掌握其分析方法。
- 学习如何通过代码分析发现SQL注入漏洞,理解其危害。
- 掌握SQL注入漏洞的修复方法,如使用预编译语句、参数化查询等。
- XSS案例
- 了解XSS案例的背景和原因,掌握其分析方法。
- 学习如何通过代码分析发现XSS漏洞,理解其危害。
- 掌握XSS漏洞的修复方法,如对用户输入进行HTML编码、设置HttpOnly和Secure属性等。
- 反序列化漏洞案例
- 了解反序列化漏洞案例的背景和原因,掌握其分析方法。
- 学习如何通过代码分析发现反序列化漏洞,理解其危害。
- 掌握反序列化漏洞的修复方法,如使用安全的反序列化库、限制反序列化类型等。
(三)靶场实战
- WebGoat
- 了解WebGoat的基本功能,掌握其使用方法。
- 学习如何通过WebGoat靶场定位代码中的漏洞点,理解漏洞的原理和危害。
- 掌握如何通过WebGoat靶场进行漏洞修复和测试,验证修复效果。
- DVJA
- 了解DVJA的基本功能,掌握其使用方法。
- 学习如何通过DVJA靶场定位代码中的漏洞点,理解漏洞的原理和危害。
- 掌握如何通过DVJA靶场进行漏洞修复和测试,验证修复效果。
- 其他靶场
- 了解其他Java漏洞靶场(如OWASP Juice Shop等),掌握其使用方法。
- 学习如何通过其他靶场定位代码中的漏洞点,理解漏洞的原理和危害。
- 掌握如何通过其他靶场进行漏洞修复和测试,验证修复效果。
(四)审计开源项目
- 选择开源项目
- 选择中小型开源Java项目(如博客系统、CMS等),了解其功能和代码结构。
- 学习如何通过开源项目进行代码审计,发现潜在的安全问题。
- 审计过程
- 了解代码审计的基本流程,掌握其方法和技巧。
- 学习如何通过代码审计发现开源项目中的漏洞,如SQL注入、XSS、反序列化漏洞等。
- 掌握如何通过代码审计提出修复建议,验证修复效果。
- 审计报告
- 了解代码审计报告的基本内容,掌握其编写方法。
- 学习如何通过代码审计报告记录审计过程和发现的问题,提供修复建议。
- 掌握如何通过代码审计报告与项目团队进行沟通,推动修复工作。
五、进阶学习
(一)深入研究Java安全机制
- JDK底层安全机制
- JEP 290
- 了解JEP 290的基本概念,掌握其内容和要求。
- 学习如何通过JEP 290实现Java的安全机制,如限制反序列化类型等。
- RASP技术
- 了解RASP技术的基本概念,掌握其原理和应用。
- 学习如何通过RASP技术实现Java的安全防护,如实时监控和防御漏洞攻击等。
- Java安全架构
- Java安全模型
- 了解Java安全模型的基本概念,掌握其内容和要求。
- 学习如何通过Java安全模型实现Java的安全机制,如限制代码执行权限等。
- Java安全策略
- 了解Java安全策略的基本概念,掌握其内容和要求。
- 学习如何通过Java安全策略实现Java的安全机制,如限制代码执行权限等。
(二)自动化工具开发
- 开发自动化代码审计工具
- 需求分析
- 了解自动化代码审计工具的需求,掌握其功能和要求。
- 学习如何通过需求分析确定自动化代码审计工具的功能和范围。
- 工具设计
- 了解自动化代码审计工具的设计方法,掌握其架构和模块划分。
- 学习如何通过工具设计实现自动化代码审计工具的功能和性能要求。
- 工具开发
- 了解自动化代码审计工具的开发方法,掌握其技术和工具。
- 学习如何通过工具开发实现自动化代码审计工具的功能和性能要求。
- 工具测试
- 了解自动化代码审计工具的测试方法,掌握其测试内容和要求。
- 学习如何通过工具测试验证自动化代码审计工具的功能和性能是否符合要求。
六、实践建议
(一)从靶场到真实项目
- 靶场实践
- 通过WebGoat、DVJA等靶场进行漏洞复现和修复,掌握漏洞的原理和修复方法。
- 学习如何通过靶场实践提高代码审计能力,发现潜在的安全问题。
- 真实项目审计
- 选择中小型开源Java项目或企业内部项目进行代码审计,发现潜在的安全问题。
- 学习如何通过真实项目审计提高代码审计能力,发现潜在的安全问题。
- 实践总结
- 通过靶场实践和真实项目审计,总结代码审计的经验和教训。
- 学习如何通过实践总结提高代码审计能力,发现潜在的安全问题。
(二)代码对比学习
- 漏洞修复对比
- 通过查看GitHub上漏洞修复的Commit记录,学习修复方案。
- 学习如何通过代码对比学习提高代码审计能力,发现潜在的安全问题。
- 安全代码对比
- 通过对比安全代码和不安全代码,学习安全编码的最佳实践。
- 学习如何通过代码对比学习提高代码审计能力,发现潜在的安全问题。
(三)参与众测与开源社区
- 众测平台
- 参与HackerOne、OpenBugBounty等众测平台,提交Java应用漏洞。
- 学习如何通过众测平台提高代码审计能力,发现潜在的安全问题。
- 开源社区
- 参与开源社区,贡献代码审计经验和修复方案。
- 学习如何通过开源社区提高代码审计能力,发现潜在的安全问题。
(四)总结漏洞模式
- 漏洞Checklist
- 建立自己的漏洞Checklist,记录常见的漏洞类型和特征。
- 学习如何通过漏洞Checklist提高代码审计能力,发现潜在的安全问题。
- 漏洞分类
- 对漏洞进行分类,如输入校验漏洞、反序列化漏洞、权限控制漏洞等。
- 学习如何通过漏洞分类提高代码审计能力,发现潜在的安全问题。
- 漏洞修复方法
- 总结漏洞的修复方法,如SQL注入的预编译语句、XSS的HTML编码等。
- 学习如何通过漏洞修复方法提高代码审计能力,发现潜在的安全问题。
七、注意事项
(一)法律合规
- 授权审计
- 仅审计授权项目或开源代码,避免未授权测试。
- 学习如何通过授权审计提高代码审计的合法性,避免法律风险。
- 法律知识
- 了解相关法律法规,掌握其内容和要求。
- 学习如何通过法律知识提高代码审计的合法性,避免法律风险。
(二)深入底层原理
- JVM原理
- 了解JVM的基本原理,掌握其内容和要求。
- 学习如何通过JVM原理提高代码审计能力,发现潜在的安全问题。
- Java安全机制
- 了解Java安全机制的基本原理,掌握其内容和要求。
- 学习如何通过Java安全机制提高代码审计能力,发现潜在的安全问题。
(三)关注供应链安全
- 组件漏洞
- 使用SCA工具(如Dependency-Check)扫描依赖库漏洞。
- 学习如何通过组件漏洞扫描提高代码审计能力,发现潜在的安全问题。
- 供应链攻击
- 了解供应链攻击的基本概念,掌握其原理和防范方法。
- 学习如何通过供应链攻击防范提高代码审计能力,发现潜在的安全问题。
八、推荐书籍
(一)基础与实战类
- 《Java安全编码标准》(CERT Oracle Secure Coding Standard for Java)
- 了解Java安全编码的基本规范,掌握其内容和要求。
- 学习如何在实际开发中应用这些规范,编写安全可靠的代码。
- 《白帽子讲Web安全》(吴翰清)
- 了解Web安全的基本概念,掌握其内容和要求。
- 学习如何在实际开发中应用这些知识,编写安全可靠的代码。
- 《Java代码审计:入门篇》(开源电子书)
- 了解Java代码审计的基本概念,掌握其内容和要求。
- 学习如何在实际开发中应用这些知识,发现潜在的安全问题。
- 《漏洞战争》(林桠泉)
- 了解漏洞的基本概念,掌握其内容和要求。
- 学习如何在实际开发中应用这些知识,发现潜在的安全问题。
(二)框架与进阶
- 《Spring实战》(Craig Walls)
- 了解Spring框架的基本概念,掌握其内容和要求。
- 学习如何在实际开发中应用这些知识,编写安全可靠的代码。
- 《Java反序列化漏洞自动化审计》(技术博客/论文)
- 了解Java反序列化漏洞的基本概念,掌握其内容和要求。
- 学习如何在实际开发中应用这些知识,发现潜在的安全问题。
浙公网安备 33010602011771号