背景
随着技术的发展,人们对于系统安全性和用户体验的要求越来越高。传统的图形验证码虽然在一定程度上能够防止恶意攻击,但用户体验相对较差,且存在被破解的风险。因此,大多数网站系统逐渐采用行为验证码来代替图片验证码。行为验证码是指通过用户行为来验证用户身份的验证码,如滑动拼图、识别图片中的特定物品等。它的重要性在于可以有效地防止机器人和恶意程序对网站或应用程序进行恶意攻击、刷流量、撞库等行为,从而保障了用户和网站的安全。相较于传统的图形验证码等方式,行为验证码更难被破解,同时也更加方便用户操作。另外,行为验证码还可以提高用户的使用体验,减少用户的操作负担,提高网站或应用程序的可用性和用户留存率。
登录流程
登录功能需要行为验证码captcha人工识别图形正确时才可正常登录,流程通常包括以下几个步骤:
用户触发登录操作:用户在登录界面输入用户名或手机号等身份信息后,触发登录操作。
系统生成行为验证码:系统根据预设的规则或算法,生成一个行为验证码。这个验证码可能是滑动拼图、点击特定区域等形式。
显示行为验证码:系统将生成的行为验证码显示在登录界面上,供用户进行操作。
用户完成行为验证:用户根据系统提示,完成行为验证码的验证操作。例如,滑动拼图到正确的位置,或点击指定的区域等。
系统验证用户行为:用户完成行为验证后,系统将用户的操作与预设的规则或算法进行比对,判断用户的行为是否符合要求。
登录验证结果:
- 如果用户的行为符合要求,系统认为用户是真实的,将允许用户登录,并生成相应的登录令牌(token)或其他身份信息,供用户在后续的业务请求中使用。
- 如果用户的行为不符合要求,系统可能认为用户是恶意的,将拒绝用户的登录请求,并可能显示相应的错误信息或提示用户重新进行验证。
后续业务请求:用户登录成功后,每次进行业务请求时,都需要携带登录令牌(token)或其他身份信息,以便系统进行身份验证和权限控制。
模拟攻击
1.实践某网站负载请求验证码captcha URL
我们使用hey轻量级压测工具,小试牛刀下, 并发1000,请求1000 到某个网站验证码服务端URL
响应时间平均20秒
2.此时已不可登录,需要等待较长时间才能响应,导致系统登录不可用,形成DDOS攻击
1)有几种可能性,验证码功能与主工程在一起部署,故产生连带效应,影响性能
2)验证码服务单独部署,但高负载请求流量影响了入口网关的带宽。
解决方案
针对这种利用验证码模块的缺失图片生成URL形成的DDoS攻击,解决方案可以从验证码请求的优化、流量控制、动态防护等多个方面进行。以下是应对策略:
1. 限制验证码请求频率与频繁请求惩罚机制
- 速率限制:为验证码生成缺失图片的请求设置每IP的请求频率限制,例如每分钟最多3-5次请求。通过Web应用防火墙(WAF)或反向代理实现这一限制。
- 渐进式惩罚机制:对于频繁请求验证码的IP实施逐步延长的冷却时间,即每次请求失败后的等待时间递增,逐步减缓恶意请求的攻击频率。
2. 增强验证码生成和验证的随机性
- 动态图片URL:为每次生成的缺失图形使用独立的URL,且加入随机标识或动态Token,使同一个验证码请求无法复用。
- 短期有效期:生成的URL在短时间后失效(例如30秒内),防止攻击者反复请求相同的URL资源。
- 缺失图形位置随机化:每次生成验证码时,缺失的图形位置随机变化,增加恶意脚本请求成功率的难度。
3. 使用前端验证码验证优化与缓存机制
- 前端缓存机制:前端客户端在短时间内(例如5分钟)缓存生成的验证码,减少多次刷新造成的重复请求压力。
- 预生成验证码:在后台异步预生成一批缺失图片并缓存到CDN,以减轻主服务器在高并发时的生成压力。
4. 增强行为分析和识别恶意请求
- 行为分析模型:利用机器学习模型或行为分析算法,检测是否存在批量自动化请求特征,识别并阻止异常流量。
- 鼠标轨迹深度检测:验证鼠标轨迹在验证码交互中的真实性,如判断鼠标轨迹的流畅性、速度等,进一步判断是否为自动化脚本生成的伪轨迹。
5. 使用IP灰名单与验证码复杂度调整
- 灰名单机制:对可疑的IP先进入灰名单状态,限制其请求频率或增加额外的复杂验证码步骤。对于确认的恶意IP直接封禁。
- 验证码复杂度动态调整:在系统检测到异常流量时,自动增加验证码的难度,如增加缺失图块数量或混淆图形,减少脚本自动破解的成功率。
6. 引入外部DDoS防护和流量清洗
- DDoS防护服务:结合CDN和DDoS防护服务(如Cloudflare、Akamai或AWS Shield)对验证码URL的访问请求进行实时监测和过滤,确保恶意请求不会直接到达服务器。
- 特定流量清洗:在检测到大量异常流量时,自动启动流量清洗,将请求引流到DDoS清洗中心处理。
7. 针对验证码模块的动态监控和日志分析
- 实时监控:对验证码请求量和成功率进行实时监控,一旦发现异常高的请求频率或失败率立刻报警。
- 日志分析:定期对验证码请求日志进行分析,排查可疑的IP、请求模式,以便提前识别潜在威胁。
8. 降级策略和备选验证机制
- 系统降级:在遭遇大规模攻击时,可以临时关闭行为验证码或切换到其他验证方式(如短信验证或双因子验证)以保证用户能够正常登录。
- 备选验证:为部分关键用户提供备用验证通道,确保正常用户在攻击期间仍可以访问。
9. 验证码模块隔离部署
- 模块化隔离:将验证码模块与主要应用逻辑隔离,单独分配服务器资源,避免验证码模块的高负载影响主应用的登录功能。
10. 定期监控和测试
- 定期检查验证码模块的请求量和访问模式,及时识别异常流量。
- 使用模拟攻击进行压力测试,确保验证码模块能够有效防御恶意请求。
实施效果预期
通过这些方法,能够有效缓解验证码模块URL的DDoS攻击风险,提高系统在高并发和恶意请求下的可用性。
更多参考
Denial of Service Cheat Sheet
https://cheatsheetseries.owasp.org/cheatsheets/Denial_of_Service_Cheat_Sheet.html
今天先到这儿,希望对云原生,技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管理,信息安全,团队建设 有参考作用 , 您可能感兴趣的文章:
构建创业公司突击小团队
国际化环境下系统架构演化
微服务架构设计
视频直播平台的系统架构演化
微服务与Docker介绍
Docker与CI持续集成/CD
互联网电商购物车架构演变案例
互联网业务场景下消息队列架构
互联网高效研发团队管理演进之一
消息系统架构设计演进
互联网电商搜索架构演化之一
企业信息化与软件工程的迷思
企业项目化管理介绍
软件项目成功之要素
人际沟通风格介绍一
精益IT组织与分享式领导
学习型组织与企业
企业创新文化与等级观念
组织目标与个人目标
初创公司人才招聘与管理
人才公司环境与企业文化
企业文化、团队文化与知识共享
高效能的团队建设
项目管理沟通计划
构建高效的研发与自动化运维
某大型电商云平台实践
互联网数据库架构设计思路
IT基础架构规划方案一(网络系统规划)
餐饮行业解决方案之客户分析流程
餐饮行业解决方案之采购战略制定与实施流程
餐饮行业解决方案之业务设计流程
供应链需求调研CheckList
企业应用之性能实时度量系统演变
如有想了解更多软件设计与架构, 系统IT,企业信息化, 团队管理 资讯,请关注我的微信订阅号:
作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
该文章也同时发布在我的独立博客中-Petter Liu Blog。