个人总结——网络安全与软件工程综合实践

个人总结------网络安全与软件工程综合实践

姓名:毛敏磊

角色:AI引擎开发、联调


一、回顾

1.1 目标达成

在本次课程实践中,我在以下方面达到了预期目标:

  • 掌握RESTful API设计与实现:通过后端ChallengeController的开发,实现了AI对话接口(chatWithAI)和Payload提交接口(submitPayload),完成了前后端的数据交互流程。
  • 深入理解Prompt注入攻击原理:通过设计PromptEngine核心算法,实现了validate()验证函数和checkInjectionSuccess()检测函数,深入理解了AI安全领域的关键技术。
  • 熟练使用TypeScript进行后端开发:在server/src/engine/promptengine.ts中实现了完整的AI引擎逻辑,包括规则验证、注入检测和响应生成等核心功能。
  • 掌握前后端联调技能:完成了前端Angular应用与后端Node.js服务的集成,解决了跨域、数据格式转换等联调问题。
  • 学会使用Jest进行单元测试:为PromptEngine编写了测试用例,覆盖了核心函数的各种边界情况。

1.2 存在不足

在以下方面存在不足,需要改进:

  • 自动化测试覆盖率不足:虽然编写了单元测试,但覆盖率仅达到60%,未能覆盖所有边缘场景,主要原因是时间管理不当,后期专注于功能开发而忽视了测试完善。
  • 前端开发能力有待提升:作为后端开发人员,对Angular框架的理解不够深入,在联调过程中遇到了较多前端技术问题,影响了联调效率。

1.3 改进计划

针对上述不足,制定以下改进措施:

  • 学习Jest高级测试技巧,提高测试覆盖率至80%以上,重点关注异常情况和边界条件的测试。
  • 系统学习Angular框架,掌握组件化开发和RxJS响应式编程,提升前后端联调效率。

1.4 印象深刻的作业

最让我印象深刻的是AI引擎开发阶段:

挑战性:PromptEngine需要处理复杂的规则匹配和注入检测逻辑,涉及多模式匹配、字符串处理和异步响应生成等技术难点。

学习收获:深入理解了AI安全领域的Prompt注入攻击原理,掌握了TypeScript异步编程技巧和单元测试方法。

解决方案:通过查阅安全领域文献和与团队讨论,设计了基于模式匹配的验证算法,并使用Jest进行全面测试确保算法正确性。

【人机协作】

  • 使用工具:ChatGPT、GitHub Copilot
  • AI用途:帮助总结目标达成情况,生成测试用例模板,优化代码结构
  • 采纳建议:AI建议使用策略模式重构PromptEngine的规则匹配逻辑,提高了代码可扩展性
  • 拒绝建议:AI建议使用正则表达式进行所有规则匹配,但考虑到性能和可读性,我选择使用字符串匹配结合缓存机制
  • 辅助效果评分:4分。AI在代码优化和测试设计方面提供了很好的思路,但在理解项目业务逻辑方面还有提升空间

二、耕耘

2.1 时间与产出统计

项目 统计数据
总学习时间 约120小时(12周,每周约10小时)
代码量(LOC) 约2500行(TypeScript)
注释率 约15%
代码提交次数 38次

2.2 关键产出物

  • 代码仓库:GitHub - AI安全挑战插件后端服务(server/目录)
  • 核心模块:PromptEngine(engine/promptengine.ts)- 负责Prompt注入检测和AI响应生成
  • API接口:ChallengeController(controllers/challengecontroller.ts)- 提供AI对话和Payload提交接口
  • 测试文档:Jest单元测试用例(test/engine/promptengine.test.ts)
  • 技术文档:API接口文档和架构设计说明

【人机协作】

  • 使用工具:ChatGPT、GitHub Copilot
  • AI用途:生成代码统计表格格式,优化文档结构
  • 采纳建议:AI建议使用表格展示数据,提高可读性
  • 拒绝建议:AI建议生成复杂的折线图代码,但考虑到文档简洁性,选择使用表格
  • 辅助效果评分:4分。AI在文档格式优化方面提供了很好的建议

三、收获

3.1 量化成果

  • 用户量:团队内部测试使用,约30人次参与测试
  • 代码影响力:项目代码已提交至团队仓库,作为AI安全教学案例使用
  • 项目获奖:团队项目获得课程优秀项目提名

3.2 技能提升

技术能力

  • TypeScript后端开发:熟练使用Node.js + Express框架,掌握异步编程和Promise模式
  • RESTful API设计:设计了符合REST规范的API接口,支持JSON格式数据交互
  • 单元测试:使用Jest编写测试用例,理解测试驱动开发理念
  • Git版本控制:熟练使用Git分支策略,参与代码审查和Merge Request流程

软技能

  • 敏捷会议参与:通过每日站会和Sprint计划会议,提高了团队协作效率
  • 代码审查能力:参与团队代码审查,学会了如何给出建设性反馈
  • 技术文档编写:编写API文档和架构说明,提高了技术写作能力

3.3 使用的软件/工具

  • 开发工具:Visual Studio Code、Git、GitHub
  • 框架技术:Node.js、Express、TypeScript、Angular
  • 测试工具:Jest、Postman
  • 协作工具:GitHub Issues、Discord、Notion

【人机协作】

  • 使用工具:ChatGPT
  • AI用途:帮助识别技能提升点,提供技能分类建议
  • 采纳建议:AI建议将技能分为技术能力和软技能两类,使总结更加清晰
  • 拒绝建议:AI建议添加更多技能条目,但我认为当前的分类已经足够全面
  • 辅助效果评分:4分。AI帮助我系统地梳理了技能提升情况

四、结构化的理解

4.1 知识(Knowledge)

  • MVC架构:来源于课程学习,理解了Model-View-Controller的分层设计思想
  • RESTful API设计原则:来源于课程和项目实践,掌握了资源定位、HTTP方法使用等原则
  • Prompt注入攻击原理:来源于安全课程和项目实践,理解了AI系统的安全漏洞类型

4.2 理解(Comprehension)

  • 持续集成:是一种软件开发实践,通过自动化构建和测试,确保代码变更能快速集成到主干分支,提高开发效率和代码质量。在项目中,我们通过GitHub Actions实现了CI流程。
  • 单元测试:是对软件中最小可测试单元的验证,通过隔离测试确保每个模块的正确性。在项目中,我为PromptEngine编写了单元测试,覆盖核心功能。

4.3 应用(Application)

  • 使用Git分支策略管理多人协作:在团队项目中,我们采用main分支作为稳定分支,每个功能开发创建feature分支,完成后通过Pull Request合并。具体步骤:

    1. git checkout -b feature/prompt-engine
    2. 开发功能
    3. git push origin feature/prompt-engine
    4. 创建PR并进行代码审查
    5. 合并到main分支
  • 使用Jest进行单元测试:为PromptEngine的validate()和checkInjectionSuccess()函数编写测试用例,覆盖正常输入、边界条件和异常情况。

4.4 分析(Analysis)

问题:PromptEngine的规则匹配性能瓶颈

成因拆解

  1. 规则数量较多时,线性匹配效率低
  2. 每次请求都重新解析规则,没有缓存机制
  3. 字符串匹配算法复杂度较高

解决方案

  1. 使用Trie树优化规则匹配,将O(n*m)复杂度降为O(m)
  2. 引入规则缓存机制,避免重复解析
  3. 使用正则表达式预编译提高匹配效率

4.5 综合(Synthesis)

在项目管理中,我使用WBS(工作分解结构)方法将AI引擎开发任务分解为以下子任务:

  1. 需求分析与设计(2天)
  2. PromptEngine核心算法实现(5天)
  3. API接口开发(3天)
  4. 单元测试编写(2天)
  5. 前后端联调(3天)

通过这种方式,将复杂的开发任务分解为可管理的子任务,便于进度跟踪和责任分配。

4.6 评价(Evaluation)

对比对象:同类AI安全挑战平台(如Hack The Box的AI挑战模块)

优势

  • 规则匹配算法效率较高,支持实时检测
  • 前后端架构清晰,易于扩展新的挑战类型
  • 代码结构良好,具有较好的可维护性

不足

  • UI交互较为简单,用户体验有待提升
  • 缺少详细的文档和使用教程

感受:通过对比分析,我认识到在保证核心功能的同时,用户体验和文档完善也是项目成功的重要因素。

【人机协作】

  • 使用工具:ChatGPT
  • AI用途:提供布鲁姆分类法的示例,帮助理解各层次的要求
  • 采纳建议:AI建议按照布鲁姆分类法的六个层次组织内容,使总结更加结构化
  • 拒绝建议:AI提供的部分示例与我的实际经历不符,我根据自己的项目经验进行了修改
  • 辅助效果评分:4分。AI帮助我理解了布鲁姆分类法的框架,但需要结合实际经验进行调整

五、属于我们的人月神话

经验一:需求频繁变更的应对

问题描述:项目初期需求变更频繁,导致开发进度延迟,代码返工率较高。

解决方案:引入需求冻结期机制,在每个Sprint开始前确定需求范围,Sprint期间不接受新需求,确保团队专注于当前任务。

实例佐证:引入需求冻结期后,代码返工率从40%下降到15%,开发效率显著提升。

经验二:跨团队联调的沟通

问题描述:前后端联调时,由于接口定义不明确,导致联调过程中出现大量沟通成本。

解决方案:在联调前编写详细的API接口文档,明确请求参数、响应格式和错误码定义,使用Postman进行接口测试。

实例佐证:通过提前定义接口文档,联调时间从预计的5天缩短到2天。

【人机协作】

  • 使用工具:ChatGPT
  • AI用途:提供"人月神话"相关的经典案例参考
  • 采纳建议:AI建议结合具体实例说明经验,使总结更有说服力
  • 拒绝建议:AI建议引用《人月神话》中的具体章节,但我认为直接结合团队实际经验更有价值
  • 辅助效果评分:3分。AI提供的案例参考有一定帮助,但需要结合实际情况进行迁移

六、对团队的分析

6.1 团队发展阶段

我们的团队经历了四个阶段:

形成阶段

团队成员初次组队,进行分工讨论,确立了Git工作流和代码规范。我负责AI引擎开发模块。

磨合阶段

在PromptEngine规则阈值设置上产生争议,有的成员认为应该使用严格规则,有的认为应该宽松。最终通过分析测试数据,使用ROC曲线确定了最优阈值。

规范阶段

制定了代码审查清单,要求每次PR必须包含测试用例和文档更新,确保代码质量。

创造阶段

团队自主设计了混合水印方案,应对"复述-翻译循环攻击",展现了创新能力。

6.2 是否达到"创造"阶段

。团队在项目后期展现了创造阶段的特征,自主设计了针对AI攻击的防御方案,体现了团队的创新能力和协作水平。

【人机协作】

  • 使用工具:ChatGPT
  • AI用途:帮助分析团队阶段特征
  • 采纳建议:AI建议按照形成、磨合、规范、创造四个阶段进行分析
  • 拒绝建议:AI对团队阶段的归类不完全符合我们的实际情况,我根据团队真实经历进行了调整
  • 辅助效果评分:3分。AI提供了分析框架,但需要根据实际情况进行调整

七、证明学会了软件工程

7.1 研发符合用户需求的软件

用户调研记录:通过问卷收集了30位同学的反馈,主要需求包括:

  • 希望有清晰的挑战说明
  • 需要实时反馈攻击是否成功
  • 希望有难度分级

真实用户反馈:某同学试用后建议增加批量检测功能,我们在后续迭代中进行了实现。

7.2 通过软件流程按时发布软件

迭代计划:采用Scrum敏捷开发方法,共进行3个Sprint:

  • Sprint 1(2周):需求分析和架构设计
  • Sprint 2(3周):核心功能开发
  • Sprint 3(2周):测试和优化

版本发布:v1.0(基础功能)、v1.1(新增批量检测)

7.3 软件可维护和可继续发展

  • 代码规范:制定了TypeScript代码规范文档,包含命名规范、代码格式、注释要求等
  • 单元测试覆盖率:核心模块测试覆盖率达到65%,计划后续提升至80%
  • API文档:使用Swagger生成了在线API文档,便于团队协作和后续维护

7.4 自评

  • 掌握理论:学会了WBS任务分解、敏捷开发流程、RESTful API设计等理论知识
  • 使用工具:熟练使用Git、Jest、Postman等工具
  • 工程能力:完成了从需求分析到部署的全流程,具备独立开发和团队协作能力

【人机协作】

  • 使用工具:ChatGPT、GitHub Copilot
  • AI用途:协助生成测试用例和文档模板
  • 采纳建议:AI建议使用Swagger生成API文档,提高了文档的规范性
  • 拒绝建议:AI生成的测试用例部分不符合实际业务逻辑,需要进行修改
  • 辅助效果评分:4分。AI在文档和测试方面提供了很好的辅助

八、建议

8.1 对下一届学生

  • 问题:Git基础薄弱导致协作冲突
  • 建议:尽早学习Git基础操作和分支策略,熟悉Pull Request流程

8.2 对大一的自己

  • 问题:算法基础不够扎实
  • 建议:重视数据结构和算法课程,多做编程练习,夯实基础

8.3 对课程改进

  • 问题:缺少真实客户需求模拟
  • 建议:增加真实客户需求模拟环节,让学生体验从需求分析到交付的完整流程

【人机协作】

  • 使用工具:ChatGPT
  • AI用途:提供建议方向
  • 采纳建议:AI建议分对象提出建议,结构更清晰
  • 拒绝建议:AI建议增加"对老师的建议",但我认为应聚焦于学生和课程改进
  • 辅助效果评分:4分。AI帮助我组织建议结构,但具体内容需要结合实际经验

参考链接

相关推荐
德迅云安全-甲锵1 小时前
SCDN:以极致节点能力,重塑网络安全与加速新体验
安全·web安全
guslegend1 小时前
AI驱动的缺陷全自动修复
人工智能·软件工程
网安小白的进阶之路1 小时前
B模块 安全通信网络 第二门课IPv6与WLAN 04
网络·安全·智能路由器
CJH(本人账号)2 小时前
AI Agent 安全危机:当你的“智能助手“变成攻击者的“远程武器“
网络·人工智能·安全·ai·开源·github
ylscode2 小时前
谷歌Gemini Go正式登场:轻量级AI助手让低端手机也能玩转生成式智能
网络·人工智能·安全·chatgpt
许彰午2 小时前
微服务安全上下文的透明传递——ThreadLocal透传与HTTP头转发的完整链路
安全·http·微服务
peterfei2 小时前
ai-agent-scan v1.0.0:基于 MCP 协议的开源 SAST 安全扫描器
安全·ai编程
汽车仪器仪表相关领域2 小时前
南华 NHASM-1 型稳态工况法汽车排气检测系统|国标合规汽油车工况检测专用设备
功能测试·安全·单元测试·汽车·压力测试·可用性测试
祁白_3 小时前
PHP回调函数
web安全·php·ctf·代码审计·writeup