网站的攻击者通过批量注册用户,能够实施大规模非法操作,如抢优惠券、恶意刷单等。这给服务商造成了直接的经济损失,而大量的垃圾用户也会占用系统资源,增加系统运行压力。防范批量注册需要针对系统特点,多管齐下综合应对,iFlow 业务安全加固平台可以提供各种防范批量注册的技术实现方式。


以某电商网站为例,其用户注册功能存在被攻击者利用的可能。在此将模拟攻击者批量注册的行为,并利用 iFlow 使用多种手段来防范攻击。

攻击示例

攻击者编写 RegistTest.py 脚本进行攻击,脚本使用 WebDriver 驱动浏览器模拟正常用户的注册操作。

攻击者事先准备好待注册的用户/口令文件。脚本执行时循环进行如下操作:逐行读取用户/口令文件中的信息→访问注册页面→使用第三方软件识别验证码→将用户信息注册提交。

脚本运行完毕后,可以看到大量用户被注册,均来自于攻击者准备的用户文件。

手段一 频度限制

使用 iFlow 可以简便地实现在规定时间内限制同一访问主体 (IP 或设备) 的用户注册次数,也可以在规定时间内限制网站整体的用户注册次数。

代码实现以下条件:

  • 同一设备在 30 分钟内用户注册超过 3 次,则阻止此设备访问 10 分钟;

  • 同一 IP 在 60 分钟内用户注册超过 10 次,则阻止此 IP 访问 20 分钟;

  • 网站整体在 120 分钟内用户注册超过 100 次,则暂停整个系统注册操作 30 分钟。

{"if": ["REQUEST_FILENAME == '/shop/index.php'","@ARGS.s == '/index/user/reg.html'"],"then": ["DEVICE.reg_num@1800=DEVICE.reg_num+1","REAL_IP.reg_num@3600=REAL_IP.reg_num+1","GLOBAL.reg_num@7200=GLOBAL.reg_num+1",{"if": "DEVICE.reg_num>3","then": ["DEVICE.reg_num=null","block('DEVICE',10*60,'deny')"]},{"if": "REAL_IP.reg_num>10","then": ["REAL_IP.reg_num=null","block('REAL_IP',20*60,'deny')"   ]},{"if": "GLOBAL.reg_num>100","then": ["GLOBAL.reg_num=null","GLOBAL.reg_blocking@1800=true"]},{"if": "GLOBAL.reg_blocking","then": "verdict('deny')"}]
}

手段二 页面关联

正常用户填写注册信息是需要花费一段时间的,而自动化攻击获取注册页面和提交注册信息的时间往往很短。使用 iFlow 可以有效判断这种差异,进而区分正常用户和自动化脚本。

代码实现以下条件:

  • 提交注册 (reg.html) 之前 120 秒内必须访问过注册页面 (reginfo.html);

  • 访问注册页面 (reginfo.html) 后,必须超过 5 秒才能提交注册 (reg.html)。

[{"if": ["REQUEST_FILENAME == '/shop/index.php'","@ARGS.s == '/index/user/reginfo.html'"],"then": ["SESSION.had_access_reginfo_page_flag@120=1","SESSION.time_between_reginfo_and_reg@5=1"]},{"if": ["REQUEST_FILENAME == '/shop/index.php'","@ARGS.s == '/index/user/reg.html'"],"then": {"if": "!SESSION.had_access_reginfo_page_flag","then": {"action": "deny","log": "reginfo.html must access firstly!"},"else": {"if": "!SESSION.time_between_reginfo_and_reg","then": "SESSION.had_access_reginfo_page_flag=null","else": {"action": "deny","log": "The time between reginfo.html and reg.html is too short!"}}}}
]

手段三 客户端识别

正常用户使用浏览器访问网站,攻击者则使用工具模拟浏览器或驱动浏览器引擎来访问网站。我们使用 iFlow 在响应中主动插入和运行前端代码来获取客户端的特征。

代码实现以下条件:

  • 访问注册页面 (reginfo.html) 时,iFlow 在响应报文中加入 js 代码段,这段代码判断客户端是否为 WebDriver,并将结果发送到 iFlow 检查点 (checker.dummy);

  • 访问 iFlow 检查点 (checker.dummy) 时,iFlow 获得判断结果,如果是 WebDriver 则阻止该 IP 的访问 10 小时。

[{"if": ["REQUEST_FILENAME == '/shop/index.php'","@ARGS.s == '/index/user/reginfo.html'"],"then": {"directive": "alterResponseBody","op": "string","target": "var __user_id__ = 0;","substitute": "var __user_id__ = 0; var httpRequest = new XMLHttpRequest(); httpRequest.open('GET', '/iflow/checker.dummy?ret='+window.navigator.webdriver); httpRequest.send(); "}},{"if": ["REQUEST_FILENAME == '/iflow/checker.dummy'","@ARGS.ret != 'false'"],"then": ["verdict('deny', 'Client is webdriver!')","block('REAL_IP', 3600*10, 'deny', REAL_IP.__id..' in blocking')"]}
]

手段四 一次性令牌

利用 iFlow 可以给流程加入一次性限时令牌。具体到本例中,访问注册页面时用户获得一个一次性令牌,提交注册时这个令牌被消费掉,缺少令牌则不能进行提交注册。这一手段可以防范重放攻击。

代码实现以下条件:

  • 访问注册页面 (reginfo.html) 时,iFlow 在响应报文中加入 js 代码段,在参数中加入一次性令牌;

  • 提交注册 (reg.html) 时,iFlow 检查一次性令牌的真实性并予以销毁,即令牌不能被重复使用。

[{"if": ["REQUEST_FILENAME == '/shop/index.php'","@ARGS.s == '/index/user/reginfo.html'"],"then": ["TX.tmp_ulh=md5(random())","SESSION.reginfo_ulh@300=SESSION.reginfo_ulh..','.. TX.tmp_ulh",{"directive": "alterResponseBody","op": "string","target": "/index/user/reg.html", "substitute": "/index/user/reg.html&ulh=${TX.tmp_ulh}"}]},{"if": ["REQUEST_METHOD == 'POST'","REQUEST_FILENAME == '/shopxo-1.6.0/index.php'","@ARGS.s == '/index/user/reg.html'"],"then": {"if": "notNull(SESSION.reginfo_ulh)","then": ["SESSION.reginfo_ulh = null",{"if": "!contain(SESSION.reginfo_ulh, @ARGS.ulh)","then": {"action": "deny","log": "${SESSION.reginfo_ulh} not contain ${@ARGS.ulh}!"},"else": {"directive": "alterArgGet","op": "unset","name": "ulh"}}],"else": {"action": "deny","log": "${SESSION.reginfo_ulh} is not exist!"}}}
]

总结

针对目标电商网站的批量注册漏洞,我们使用了频度限制、页面关联、客户端识别、一次性令牌这四种手段进行防护。事实上,使用 iFlow 还可以写出其他防护手段,如参数聚合、动态混淆等。通过上述手段,使用者能够很大程度缓解攻击者的批量注册行为。

我们在上述例子中看到:在 Web 服务器前部署 iFlow 业务安全加固平台,它有能力拦截、计算和修改双向 HTTP 报文并具备存储能力,可以成为 Web 应用的虚拟补丁。

WEB安全新玩法 [11] 防范批量注册相关推荐

  1. websocket实现多屏互动_“京东11.11直播超级夜”正式官宣,跨屏互动新玩法燃爆11.11...

    10月27日,京东直播正式宣布将于11月10日晚8点在北京五棵松凯迪拉克中心举办"京东11.11直播超级夜".该晚会将由亚洲顶级制作团队操刀,超30位重磅明星倾情奉献,通过京东直播 ...

  2. 新玩法来了,web前端教程公众号推出《每日一题》

    <每日一题>是一种新玩法,怎么玩?很简单. 直接回复 "我要做题" ,将获取最新一期的习题. 比如: 写下你认为正确的答案,回复给公众号. 还可以回复历史期号,查看历史 ...

  3. micropython web ws2812_【SAMR21新玩法】29. WS2812应用之彩虹

    [SAMR21新玩法]29. WS2812应用之彩虹 [复制链接] 前面一节介绍了WS2812的驱动方法,在此基础上,我们可以设计出多种有趣的应用.首先看看WS2812灯带显示彩虹,在makecode ...

  4. 蓝魔i11pro运行linux,不仅仅是变大了 蓝魔i11pro新玩法

    在以前,很多人都觉得平板电脑是更像是一个玩具,功能偏娱乐,不外乎打打游戏,看看电影.不过随着平板电脑的普及度提高,产品逐步多样化,我们开始习惯把更多重要的事情交给平板来完成.而且在教育.餐饮.银行甚至 ...

  5. 还在担心快应用没流量?全场景新玩法来袭!

    2019年3月20日,TEF·2019快应用开发者大会在北京圆满收官落下帷幕.本次大会宣布中国移动终端公司.海信手机加入快应用生态平台,并介绍了快应用生态潜力.快游戏布局.智能场景新玩法.第三方服务战 ...

  6. 2021年国庆节假期三亚游客离岛免税购物热情高涨、偏爱高端酒店与景点新玩法...

    三亚2021年10月9日 /美通社/ -- 暑期国内局部疫情反复对三亚旅游市场带来较强冲击,2021年国庆节假期三亚迎来传统旺季的出行高峰,三亚市旅游推广局结合大数据平台与旅游统计数据,通过分析研究发 ...

  7. 诊断2018微商:从乱象到赋能,世界微商大会发明的新玩法为您指路

    在很多人眼中,微商似乎就是微信朋友圈刷广告卖东西的.但实际上,这只是4年前最原始的玩法.4年后的2018年,微商早已演化前进,真正的含义是微电商. "微商,是赋能·创新·创业,今天的微商和当 ...

  8. 阿里云6·18新玩法上线:邀好友送天猫超市卡 更有机会赢得iPhone 12 Pro!

    阿里云6·18新玩法上线:邀好友送天猫超市卡 更有机会赢得iPhone 12 Pro! 近日,阿里云618会场上线了新的活动,邀请1名新客即得猫超卡!从页面活动规则中我们了解到,邀好友最高可获500元 ...

  9. 租车新玩法 神州租车打造行业标杆

    据报道,<青年报>举办的"青年人眼中喜欢的国品潮车"活动中,神州租车荣获"青年人喜欢的租车品牌"奖.青年人是汽车租赁的主力军,并且在租车人群中所占比 ...

最新文章

  1. 后处理程序文件大小的变量_【每日一题】(17题)面试官问:JS中事件流,事件处理程序,事件对象的理解?...
  2. 计算机网络word文档,计算机网络word.doc
  3. (王道408考研数据结构)第六章图-第四节1:最小生成树之普利姆算法(思想、代码、演示、答题规范)
  4. 分布式计算的程序设计,请各位帮忙看看有没有意见
  5. 如何在硅谷一夜暴富?
  6. 电子数字 网易游戏在线笔试 第一题 hihocoder
  7. Oracle如何使用PL/SQL调试存储过程
  8. GPS时钟模块授时仪 与 同步时钟,1PPS
  9. 如何编写正确且高效的 OpenResty 应用
  10. 行业分类代码一览表2022-MySQL版
  11. 十分钟了结MySQL information_schema
  12. 优化jsj脚本,防止浏览器卡死
  13. android apk很大,从Android Studio生成的Apk文件太大
  14. 相控阵天线(三):直线阵列天线低副瓣综合(切比雪夫、泰勒分布、SinZ-Z和Villeneuve分布、含python代码)
  15. R语言入门——画密度曲线
  16. 什么是软链接?什么是硬链接?
  17. freeRTOS 时间管理
  18. uploader上传
  19. 「京东程序员」因压力过大在页面植入「骂人代码」?
  20. WebGL和OpenGL的联系和区别

热门文章

  1. CMeKG代码解读(以项目为导向从零开始学习知识图谱)(一)
  2. python爬虫实例电商_Python实现爬取并分析电商评论
  3. 企业建站为何会出问题?责任在谁?
  4. 亚像元定位 硬分类 软分类
  5. Android手机之间不消耗流量互传文件
  6. matlab生成满足二维高斯(正…
  7. neo4j - 查询效率的几种优化思路
  8. 更改 IE 代理服务器的设置
  9. NLP_Python3——正则表达式
  10. 机器人关节空间轨迹规划--S型速度规划