krishnapriyasvarma8/secure_login_cys25013
GitHub: krishnapriyasvarma8/secure_login_cys25013
一个基于 Flask 的安全登录系统教学项目,通过模拟撞库攻击并实现 bcrypt 哈希、速率限制和 TOTP 双因素认证来演示 Web 认证安全的攻防原理。
Stars: 0 | Forks: 0
# 安全登录系统
一个使用 Python 和 Flask 构建的安全登录与注册系统,实现了 bcrypt 密码哈希、带有速率限制和账户锁定的撞库攻击模拟,以及基于 TOTP 的双因素身份验证(使用 pyotp)。
## 任务
### 任务 1 - 使用 bcrypt 的安全登录
- 使用 Flask 构建的登录和注册系统
- 密码在存入数据库前使用 bcrypt 进行哈希处理
- 绝不存储明文密码
### 任务 2 - 撞库攻击与防御
- 使用 rockyou.txt 字典模拟撞库攻击
- 攻击脚本针对登录页面自动尝试密码
- 使用速率限制(每分钟 5 次尝试)实现防御
- 5 次登录失败后锁定账户 10 分钟
### 任务 3 - 基于 TOTP 的双因素认证
- 使用 pyotp 添加双因素身份验证
- 注册时生成二维码,适用于 Google/Microsoft Authenticator
- 每次登录在密码验证后进行 OTP 校验
- 拒绝错误的 OTP 和重放攻击
## 文件
- `app_before.py` - 任务 1 - 使用 bcrypt 的基本登录,无防御措施
- `app.py` - 任务 2 - 增加了速率限制和账户锁定
- `app_qr.py` - 任务 3 - 增加了基于 TOTP 的双因素认证
- `attack_multiple.py` - 针对多用户的攻击脚本
- `attack_single.py` - 针对单用户的攻击脚本
- `database.py` - 任务 1 和 2 的数据库设置
- `database_qr.py` - 任务 3 支持双因素认证的数据库设置
- `templates/` - 所有任务的 HTML 页面
## 安装
```
pip install flask bcrypt flask-limiter pyotp qrcode[pil] requests
```
## 如何运行
```
# 任务 1
python app_before.py
# 任务 2
python app.py
# 任务 3
python app_qr.py
```
标签:2FA, bcrypt, Flask, OTP验证, pyotp, Python, qrcode, SQL数据库, TOTP, Web安全, Web应用开发, XML 请求, 凭证填充攻击, 双因素认证, 安全开发, 安全测试, 安全登录系统, 密码哈希, 撞库攻击, 攻击性安全, 无后门, 模拟攻击, 登录认证, 蓝队分析, 账户锁定, 逆向工具, 防御机制, 防止重放攻击