- 博客(10)
- 收藏
- 关注
原创 基于 OWASP BLT 二次开发的漏洞管理平台 SecGuard:从漏洞闭环到 Nettacker 扫描集成
本文记录 SecGuard 漏洞管理平台的二次开发过程,介绍基于 OWASP BLT 改造时的技术选型、核心功能设计、Nettacker 扫描集成、Docker 部署踩坑,以及软件工程项目复盘经验。
2026-05-31 21:07:05
403
原创 OWASP ZAP 主动扫描模块精读:从代码逆向到质量审计
本文对OWASP ZAP安全工具的主动扫描核心模块进行了深度代码精读,涵盖3673行核心代码分析。通过UML逆向建模还原了扫描流程,识别出策略模式、工厂模式等典型设计模式。采用SonarQube扫描发现453个代码缺陷,包括clone()方法滥用、魔法字符串等问题,并给出具体修复建议。创新性地采用"自我结对"方式完成代码标注与质量分析,通过角色切换实现双重校验。研究表明,该模块具有优秀的插件化架构设计,但在代码规范、性能优化方面仍有改进空间。本次精读为安全软件开发提供了有价值的工程实践参
2026-03-31 21:38:48
411
原创 逆向工程OWASP ZAP:从代码到架构的软件工程实践
安全漏洞的本质往往是软件工程实践的系统性失败。也就是说,很多漏洞的产生,根源不在于某个具体的代码错误,而在于整个软件的设计、架构、开发流程中存在系统性问题。本次作业要求我们选择一款开源安全软件,通过逆向工程的方式复原其软件架构、设计决策和工程实践。我选择了OWASP ZAP(Zed Attack Proxy)——全球最流行的Web应用安全扫描器之一。本文记录了我从零开始分析ZAP源码、绘制UML图、理解其设计模式的全过程,希望能给同样在学习软件工程的同学一些参考。设计模式应用位置作用外观模式。
2026-03-23 17:20:35
457
原创 第十二周 预习
当点击“开始”按钮时,它会添加一个球,并在处理按钮点击事件的事件分发线程中让球弹跳 1000次。这意味着,如果一个球已经在弹跳,那么在再次点击“开始”按钮时,应用程序不会响应其他事件。:最简单的解决方案是增加更多的筷子,这样每个人都可以同时使用一双筷子(相当于增加系统资源来避免竞争条件)。,并且它们仍在运行,那么即使main方法执行完毕,程序也不会退出,直到所有非守护线程都完成它们的任务。:定义一个规则,例如轮流使用筷子,或者根据谁比较饿(谁等待的时间较长)来决定谁可以使用筷子。
2024-11-16 20:29:39
759
原创 第11周 预习
不是字符的原因: RandomAccessFile提供的是对文件的低级访问,直接操作字节可以更精确地控制文件的位置,且不依赖于字符编码。从文件中读取并组装成对象的区别同上。文本文件:存储的是字符,依赖于特定的字符编码(如UTF-8、ASCII等)。二进制流:直接将对象的状态以字节序列的形式写入文件,读取时可以直接还原对象。二进制文件:存储的是数据在内存中的原始字节表示,不依赖于字符编码。2、 流提供了一套统一的接口,便于在不同的数据源之间进行操作。字节流:以字节为单位进行读写,可以读写所有类型的文件。
2024-11-11 22:28:06
893
原创 第10周 预习
可以将 NumberFormatException 改成 Exception,但这样做会捕获所有类型的异常。我认为编译错误通常更容易解决,因为它们在编译时就被发现,而且编译器通常会提供错误的位置和原因。catch 也能编译通过,因为这不是编译时错误,而是运行时可能发生的错误。通常,应该捕获这个异常,因为如果未捕获,程序将会异常终止。这行,如果文件 “abc” 不存在或无法读取,将会抛出。这个异常意味着程序尝试打开一个不存在的文件。为上述代码添加 try…不是有效的整数表示,将会抛出。
2024-11-04 22:45:19
310
原创 第09周 预习
不同的场景需要选择合适的数据结构。例如,需要唯一性且快速查找时使用Set和HashMap;需要保持元素顺序时使用List和LinkedList;需要先进先出的队列操作时使用Queue。每种数据结构都有其特定的应用场景,选择合适的结构可以提高程序的效率和性能。
2024-10-25 16:46:03
1000
原创 项目案例作业2:对案例进行面向对象分析
案例解决的问题是管理学生的信息,包括添加、删除、搜索和显示学生信息。名词包括“学生”、“信息”、“管理系统”,动词包括“添加”、“删除”、“搜索”和“显示”。:简化了类的接口,使得外部代码只能通过定义好的方法与对象交互,增加了代码的可维护性和安全性。功能:管理学生信息的系统,提供添加、删除、搜索和获取所有学生信息的方法。模式的作用是保护对象的内部状态,并提供一个控制点来验证和修改属性值。功能:表示一个学生,包含姓名、学号、专业和GPA等属性,以及相应的。功能:程序的入口点,负责与用户交互,调用。
2024-09-23 18:40:25
425
原创 第01周 作业
=比较的是两个引用是否指向同一个对象,而.equals()比较的是对象的实际内容。对引用数据类型(如String),==比较的是对象的引用地址,而不是实际内容,因此对于字符串内容的比较,应使用.equals()方法。x 是一个 Integer 对象,值为 10,x + 1 实际上是 int 类型的操作,结果会被自动装箱成 Integer 对象,x 和 y 会被自动拆箱成 int 类型,然后进行加法运算,结果是 int 类型的值,再赋给 z;为使编译好的程序能运行,需先在操作系统安装什么?
2024-09-05 21:26:15
278
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅