电商课题:对付秒杀器等恶意访问行为的简单梳理

201208 @郑昀

-秒杀器爱好者的技能点-
  • OCR识别
    • 掌握一般的验证码图片识别OCR技术,多数局限于英文和数字字符的OCR识别,随着背景干扰加大,识别率急剧降低
  • 表单提交
    • 提前准备好表单
    • 自动填写表单,自动提交
    • 自定义快捷键
  • 题库
    • 针对特定电商,提前收集秒杀问题的题库
  • 录制回放
    • 利用“按键精灵”软件录制鼠标键盘动作并进行回放
  • 变换IP
    • 每走完一遍流程,更换一下出口IP(重新ADSL拨号或更换代理IP地址与端口)
  • 早期的cookie欺骗
    • 早期有人把cookies校验放在浏览器端做,自然可以欺骗
  • 提前获得验证码
    • 拍拍至今所使用的图片验证码都是 http://captcha.qq.com/getimage 提供的,可以与业务无关;它设置了一个会话级cookie,所以可以提前手动刷新拿到若干个verifycode和verifysession组合
  • 强制使用过期cookie!
    • 此办法可结合上一条
    • 一般是浏览器提交cookie里的verifysession(或一个Hash串)和手工输入的验证码字符串,服务器端按F(verifysession)==verifycode进行校验。那么秒杀器突破时,强制扔掉服务器之前给的Hash串,用自己手中掌握的 verifysession和 verifycode提交,这样就可以无视了。即使一组 verifysession和 verifycode在服务器端验证后立即失效,也无所谓,已经突破了,就拼谁的秒杀器并发提交快即可
  • 强制使用过期题目
    • 如果本次秒杀商品对应的答题不是一对一锁定的(换其他题提交无效),那么也可以采用上一条的做法,强制使用过期题目
郑昀 :△ 
==京东商城的做法==
2010年的京东做法:
曾推出紧急公告:
『京东将根据服务器日志判断抢购者是否使用了“秒杀器”,京东有权取消该订单,然后剩余产品重新抢购
我们会紧急开发一套临时防火墙,由系统自动屏蔽“秒杀器”并且自动封掉相关账号,取消其1元抢购权。』
郑昀 :△ 
==苏宁易购的做法==
2010年的易购做法:
❶ 系统会确认账户是否有秒杀资格:页面会提示“恭喜您获得秒杀资格,待系统验证您的账户为有效账户,秒杀榜即会显示“验证成功”,您即可以秒杀价购买商品,请关注您的账户验证状态!”,应该是在服务器端验证账户是否是有效账户的,而不是浏览器端;
验证本次表单填写的手机号码的有效性
验证账户的有效性
❷ 问题回答模式(注意是一个秒杀就会出多道题目,全部回答正确才能参与秒杀):有考古诗的,有填字游戏,有算术题,譬如“《三国演义》中周瑜是被谁气死的?”;
❸ 根据算法生成表单中hidden input控件的name:据太平讲,每次会变化控件name或id,增加秒杀器自动组装表单的难度,但防不了录制回放;
2011年的易购做法:
❶ 单个ip在单位时间内的表单提交数做了限制;
郑昀 :△ 
==建东的做法==

在应用服务器上

❶ 基于IP的简单判断:连续1分钟之内超过5次做同一件事情(一般是注册、登录、下单、付款),即在应用层处理该IP。这个数据放在jvm中即可,只保存很少的数据量,不积累,不解决那种1小时多少次重复一件事情的场景;

❷ 1小时重复一件事情的场景,交给风险控制系统进行智能分析,然后把IP加入黑名单,在应有层直接干掉;

❸ 建立黑名单账户,通过分析发现有问题的账户,直接冻结掉;

❹ 在应用上采用token、图片等方式,减少系统处理的可能,例如:降低系统自动登录的可能。为了提高体验:第一次不出现图片验证码,第二次之后才出现;在cookie中写入一个标记,如果用户更换了浏览器,也认为是第二次,出现图片验证码提示;

郑昀 :△ 

==特定商品秒杀的做法==

一个登录用户(以UserID标识)和一个秒杀商品(以GoodsID标识)对应于一个Key,给用户的图片验证码与此Key绑定,且商品开卖之前访问此验证码无效。

即图片验证码与业务、与用户、与时间有关,提前拿到其他业务的验证码无效。

图片验证码一旦验证,立即失效。

 

相关报道:
 
赠图一枚:
posted @ 2012-09-18 03:51  老兵笔记  阅读(7239)  评论(1编辑  收藏  举报