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 请求, 凭证填充攻击, 双因素认证, 安全开发, 安全测试, 安全登录系统, 密码哈希, 撞库攻击, 攻击性安全, 无后门, 模拟攻击, 登录认证, 蓝队分析, 账户锁定, 逆向工具, 防御机制, 防止重放攻击