Chanindhu/flask-web-security-lab

GitHub: Chanindhu/flask-web-security-lab

基于 Flask 构建的本地 Web 安全教学实验项目,通过电商应用演示 CSRF 和 DOM-based XSS 漏洞的攻击与防御。

Stars: 1 | Forks: 0

# Flask Web 安全实验 一个使用 Flask 和 SQLite 构建的本地 Web 安全演示项目。该项目使用一个小型电子商务应用来演示两种常见 Web 安全问题的易受攻击行为和缓解措施: - 跨站请求伪造 (CSRF) - 基于 DOM 的跨站脚本 (DOM-based XSS) 该应用程序专为受控的本地演示而设计。请勿将其部署为生产系统。 ## 评审者快速浏览 - **演示内容:** 安全与易受攻击的 Flask 实现、漏洞复现以及实用的修复说明。 - **建议优先检查的文件:** [`docs/vulnerability-analysis.md`](docs/vulnerability-analysis.md)、[`docs/remediation-notes.md`](docs/remediation-notes.md) 和 [`src/vulnerable-shop/app.py`](src/vulnerable-shop/app.py)。 - **如何验证:** 在本地运行易受攻击和已缓解模式,然后使用 [`exploits/`](exploits/) 中的 CSRF 和 DOM-XSS 示例。 ## 功能 - Flask 店铺前台,包含注册、登录、产品列表、购物车、结账、出售和账户删除流程 - 基于 SQLite 的产品、用户、订单和订单项数据 - 用于安全演示的易受攻击模式 - 使用 CSRF token、SameSite cookie、更安全的 DOM 渲染以及基本 Content Security Policy 的缓解模式 - 本地 CSRF 漏洞利用页面和 DOM-XSS payload 示例 - 关于架构、漏洞、缓解措施和演示流程的文档 ## 证明与审查证据 | 证据 | 检查位置 | 证明了什么 | |---|---|---| | 漏洞分析 | [`docs/vulnerability-analysis.md`](docs/vulnerability-analysis.md) | CSRF 和 DOM-XSS 风险得到了解释,而不仅仅是列出名称。 | | 修复说明 | [`docs/remediation-notes.md`](docs/remediation-notes.md) | 缓解措施的选择已记录在案,并与易受攻击的行为相关联。 | | 演示指南 | [`docs/demo-guide.md`](docs/demo-guide.md) | 评审者可以在本地复现易受攻击和已缓解的流程。 | | 构建/运行指南 | [`docs/build-and-run.md`](docs/build-and-run.md) | 本地设置与概述分开记录。 | | 漏洞利用示例 | [`exploits/`](exploits/) | 仓库包含用于安全演示的受控概念验证输入。 | | 运行脚本 | [`scripts/run-vulnerable.sh`](scripts/run-vulnerable.sh) 和 [`scripts/run-mitigated.sh`](scripts/run-mitigated.sh) | 这两种安全模式可以被特意启动。 | | Flask 源码 | [`src/vulnerable-shop/app.py`](src/vulnerable-shop/app.py) | 易受攻击和已缓解的实现在代码中可见。 | ## 项目结构 ``` flask-web-security-lab/ |-- src/ | `-- vulnerable-shop/ | |-- app.py # Flask app with vulnerable/mitigated modes | |-- init_db.py # Local SQLite setup | |-- requirements.txt | |-- static/ # JavaScript/CSS assets | `-- templates/ # Flask templates |-- exploits/ | |-- csrf/ # CSRF proof-of-concept pages | `-- dom-xss/ # DOM-XSS payload examples |-- scripts/ | |-- run-vulnerable.sh | `-- run-mitigated.sh |-- docs/ | |-- architecture-notes.md | |-- build-and-run.md | |-- demo-guide.md | |-- remediation-notes.md | `-- vulnerability-analysis.md |-- .gitignore `-- README.md ``` ## 快速开始 ``` cd src/vulnerable-shop python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt python init_db.py ``` 运行易受攻击模式: ``` ENABLE_MITIGATIONS=0 python app.py ``` 运行已缓解模式: ``` ENABLE_MITIGATIONS=1 python app.py ``` 打开: ``` http://127.0.0.1:5000 ``` ## 本地演示说明 漏洞利用示例假定 Flask 应用运行在 `http://127.0.0.1:5000`。 CSRF 漏洞利用页面可以从单独的本地端口提供: ``` cd exploits/csrf python3 -m http.server 8081 ``` 然后打开: ``` http://127.0.0.1:8081/cart-add-csrf.html http://127.0.0.1:8081/account-delete-csrf.html ``` ## 安全提示 本仓库仅用于本地课程作业、安全教育和作品集演示。易受攻击模式有意禁用了保护措施,以便能在 localhost 上安全地演示该行为。
标签:CSRF, Flask, SQLite, Web安全, XSS, 后端开发, 多模态安全, 安全实验靶场, 应用安全, 数据可视化, 漏洞情报, 漏洞演示, 蓝队分析, 逆向工具