CSPF-Founder/java-owasp-course

GitHub: CSPF-Founder/java-owasp-course

一套基于 OWASP Top 10:2025 的 Java 安全编码课程,通过真实漏洞代码案例教授开发者如何识别和修复常见安全漏洞。

Stars: 0 | Forks: 0

# OWASP Top 10 (2025) - Java 安全编码课程 本课程通过取自 Cyber Security & Privacy Foundation 开发的 [Java Vulnerable Lab](https://github.com/CSPF-Founder/JavaVulnerableLab) 中的**真实漏洞代码**,教授 OWASP Top 10:2025。 它取代了 [Java Security Course](https://github.com/CSPF-Founder/JavaSecurityCourse), 后者是一个基于相同实验室但涵盖较早版本 OWASP Top 10 的早期视频课程。 # 第 1 部分 - 课程 ## 从这里开始 整个课程是 [`pdf/`](pdf/) 文件夹中的一组 PDF 文件,每个主题一份。可以在任何设备的任何 PDF 阅读器中打开它们。无需设置、无需服务器,也无需安装任何东西。 按顺序阅读:首先是概述,然后是 A01 到 A10。 | # | 主题 | PDF | 涵盖内容 | |---|-------|-----|----------------| | 0 | 概述 | [概述](pdf/00-owasp-top10-overview.pdf) | 2025 年列表,自 2021 年以来的变化,类别重叠的原因,然后是每个类别的单张幻灯片 | | A01 | 失效的访问控制 | [PDF](pdf/A01-broken-access-control.pdf) | IDOR、路径遍历、缺少功能级别检查、JWT 篡改、开放重定向、SSRF、CSRF | | A02 | 安全配置错误 | [PDF](pdf/A02-security-misconfiguration.pdf) | 调试模式、实时安装程序、默认凭据、安全标头、目录列表、XXE | | A03 | 软件供应链故障 | [PDF](pdf/A03-software-supply-chain.pdf) | 过时的依赖项 (`pom.xml`)、EOL 运行时、Log4Shell、SCA、SBOM | | A04 | 加密机制失效 | [PDF](pdf/A04-cryptographic-failures.pdf) | 无盐 MD5、明文密码、存储 CVV | | A05 | 注入 | [PDF](pdf/A05-injection.pdf) | SQL 注入、跨站脚本攻击 (XSS)、OS 命令注入 | | A06 | 不安全的设计 | [PDF](pdf/A06-insecure-design.pdf) | 不安全的密码恢复、无限制上传、安全检查的客户端强制执行 | | A07 | 身份验证失效 | [PDF](pdf/A07-authentication-failures.pdf) | 无锁定/枚举、未经核实的密码更改、通过 URL 重写进行的会话固定、客户端密钥 | | A08 | 软件或数据完整性失效 | [PDF](pdf/A08-software-data-integrity.pdf) | 导致 RCE 的不安全反序列化、未经验证加载的第三方脚本 | | A09 | 安全日志记录和监控失效 | [PDF](pdf/A09-logging-alerting.pdf) | 无审计追踪、日志注入、日志中的敏感数据 | | A10 | 异常条件处理不当 | [PDF](pdf/A10-mishandling-exceptions.pdf) | 吞没异常时的故障开放 (Fail-open)、不完整的回滚导致状态损坏 | ## 各主题的结构 1. **概念** - 该类别背后的核心思想。 2. 对于每个示例:**漏洞代码**(直接取自实验室) -> **如何被利用** -> **修复方法**。 3. **开发者检查清单**以及相关类别的交叉引用。 ## 发生了什么变化:2021 年到 2025 年 - 两个新增/扩展的类别:**A03 软件供应链故障**(扩展了旧的“易受攻击和过时的组件”)和**A10 异常条件处理不当**(全新)。 - **SSRF** 被并入**A01 失效的访问控制**。 - 重命名:A07 -> “身份验证失效”,A09 -> “安全日志记录和监控失效”。 - 安全配置错误上升至第 2 位;注入下降至第 5 位。 ## 安全警告 Java Vulnerable Lab 是故意设计为不安全的。只能在隔离的 VM 或 container 中运行它,**切勿**在生产主机或公共互联网上运行。 # 第 2 部分 - 处理演示文稿 *仅在您需要进行现场演示或编辑课程时需要。如果您只是想阅读它,第 1 部分就足够了。* 第 1 部分中的每个 PDF 都是从此文件夹中匹配的独立 [reveal.js](https://revealjs.com) HTML 演示文稿导出的,例如 `A01-broken-access-control.html` 生成 `pdf/A01-broken-access-control.pdf`。reveal.js 和 每张屏幕截图都被内置在 `assets/` 下,因此这些演示文稿和 PDF 导出可以在完全没有网络访问的情况下离线工作。 ## 从 HTML 进行现场演示 在浏览器中打开任何演示文稿,或打开 `index.html` 以获取链接所有演示文稿的登录页面。 - 方向键 / 空格键:导航 - `S`:演讲者备注 - `F`:全屏 - `Esc` 或 `O`:幻灯片概览 - `?`:键盘帮助 从 HTML 而非 PDF 进行演示,您可以获得演讲者备注、幻灯片概览和进度条。PDF 没有这些功能。 ## 重新导出 PDF **脚本方式:**运行 `./export-pdf.sh` 将每个演示文稿渲染到 `pdf/` 中。如果已安装,它会使用 [`decktape`](https://github.com/astefanutti/decktape),否则使用无头 Chrome/Chromium。有关安装提示,请参阅脚本头部。`render-pdf.js` 通过 puppeteer 处理单个演示文稿,这对于大型演示文稿来说更可靠。 **手动方式(无需工具):**在演示文稿 URL 后附加 `?print-pdf`,然后打印 -> 另存为 PDF (边距:无,背景图形:开启)。 ## 检查幻灯片溢出 在编辑幻灯片正文之后,以及**在**重新导出之前: ``` NODE_PATH=$(npm root -g)/decktape/node_modules node check-overflow.js ``` 它会根据 reveal.js 画布测量每张幻灯片,并在任何溢出的幻灯片上以非零状态退出。这很重要,因为版权行是一个绝对定位的覆盖层,因此内容过满的幻灯片既不会被裁剪也不会滚动。无论是在屏幕上还是在 PDF 中,它都会悄悄地绘制在版权行的*下方*,并且没有任何信号提示。 ## 重新捕获实验室屏幕截图 `assets/shots/` 中的屏幕截图来自运行中的 Java Vulnerable Lab。要刷新它们: ``` LAB=http://HOST:8080/JavaVulnerableLab \ NODE_PATH=$(npm root -g)/decktape/node_modules node capture-lab.js ``` `capture-extra.js` 涵盖了 SSRF 和 Log4Shell 的截图。有两张截图是手动拍摄的,未编写脚本:`design-otp-intercept.png` 需要一个拦截代理,而 `integrity-untrusted-js.png` 需要运行恶意的 widget 服务器。 ## 布局 ``` *.html the decks, one per category, plus index.html assets/course.css the shared course theme assets/reveal/ vendored reveal.js (third-party, see THIRD-PARTY-NOTICES.md) assets/shots/ screenshots of the running lab pdf/ exported handout, regenerated by export-pdf.sh ``` ## 许可证 版权所有 (C) 2026 Cyber Security & Privacy Foundation。 本仓库中的每一类工作分别适用两种许可证: - **课程材料**(演示文稿、`assets/course.css`、`assets/shots/`、`pdf/` 和 Markdown 文档)基于 **CC BY-SA 4.0**。可自由分享和改编,包括用于商业用途,前提是您必须注明 Cyber Security & Privacy Foundation 的出处,提供指向该许可证的链接,说明您是否进行了更改,并以相同方式许可您的版本。 - **工具**(`export-pdf.sh`、`render-pdf.js`、`capture-lab.js`、`capture-extra.js`、`cap-one.js`、`check-overflow.js`)基于 **GPL-3.0-or-later**。 `assets/reveal/` 是基于其各自许可证的内置第三方代码,不受上述任何许可证的涵盖。有关详细信息,请参阅 `LICENSE`;有关第三方通知,请参阅 `THIRD-PARTY-NOTICES.md`。
标签:CISA项目, JS文件枚举, MITM代理, OWASP Top 10, StruQ, Web安全, 后端开发, 多模态安全, 安全培训, 安全编码, 数据可视化, 漏洞复现, 蓝队分析