文档章节

对付秒杀器等恶意访问行为的简单梳理

旁观者-郑昀
 旁观者-郑昀
发布于 2012/10/11 00:10
字数 1250
阅读 263
收藏 9

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绑定,且商品开卖之前访问此验证码无效。

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

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

 

相关报道:
 
赠图一枚:

© 著作权归作者所有

旁观者-郑昀
粉丝 100
博文 77
码字总数 162700
作品 0
朝阳
私信 提问
加载中

评论(1)

Jiangnan_
Jiangnan_
给力啊
关于 Multiget hole:spymemcached对此的实现方法

火丁说: 『 Multiget的无底洞问题 Facebook在Memcached的实际应用中,发现了Multiget无底洞问 题,具体表现为:出于效率的考虑,很多Memcached应用都已Multiget操作为主,随着访问量的增加,...

旁观者-郑昀
2013/02/08
127
0
spymemcached :某个mc节点操作连续超时超过998次就 Auto-Reconne...

spymemcached 中,一个 mc client 与某一个 mc node 之间已建立的 connection 上, 如果执行操作屡屡超时(net.spy.memcached.OperationTimeoutException), 那么,有一个计数器专门记录超时...

旁观者-郑昀
2013/02/08
162
0
spymemcached 的 useNagle 问题与 TCP/IP延迟发送数据

先说一下结论。 如果你没有特意在 spymemcached 的 client bean definition 里配置 useNagleAlgorithm 属性为 True, 那么默认 spymemcached 是不启用 Nagle 算法的。 所以默认情况下不会引发...

旁观者-郑昀
2013/02/08
167
0
秒杀系统企业级实战应用(真实工业界案例)

随着互联网不断发展,电商越来越流行,商家为了多卖商品,给宝贝们标出了放血的价格, 剁手党们也是参与各种抢购和秒杀活动。那么问题来了,面对瞬间爆发的访问压力和海量的交易数据,我们该...

小红牛
2018/05/17
0
0
云妹浅谈 | 纵深防爬的“抗战”之路

0x00 爬虫=爬数据? 之所以又提“什么是爬虫”这个老生常谈的问题,是前几天有个验证码接口被刷的用户在群里讨论防护方案,他认为这种不算是爬虫,爬数据的才叫爬虫(这里的“爬数据”指的是...

阿里云科技快讯
2018/08/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

springboot初探---spring-boot-starter-web究竟干了啥

上一篇已经简单介绍了启动类的部分,这一篇主要讨论一下springboot引入的哪些依赖 我们都知道想用springboot做一个web应用,首先要做的是引入相关依赖,两步操作: 1、添加spring-boot-start...

计算机狼
30分钟前
5
0
基于Rocket.chat搭建内网聊天系统(使用docker,本机不需要安装meteor)

您可能不希望使用标准的Docker命令,而是希望对部署进行更多的自动化管理。这就是使用Docker-compose可能会派上用场的地方。 确保您已安装Docker和Docker-compose并且可以正常运行。 docker...

吴伟祥
32分钟前
6
0
conda 更新源

更新conda 源为阿里源 conda config --add channels http://mirrors.aliyun.com/pypi/simple conda config --set show_channel_urls yes 阿里云: http://mirrors.aliyun.com/pypi/simple/ 豆......

Mr_Tea伯奕
33分钟前
4
0
java 泛型使用

每次写泛型方法都翻下百度,还是自己记录下把。 1、定义一个泛型方法,使用传入参数类型来传递泛型。这种用法在封装json序列化工具类应该会用到。 List<xxx> aa = getList(xxx.class);pr...

朝如青丝暮成雪
37分钟前
6
0
深入了解Java模板引擎Freemarker

前言 常用的Java模板引擎包括:JSP、Freemarker、Thymeleaf、Velocity,从Github上查阅到这几款主流的模板引擎的性能的对比,总体上看,JSP、Freemarker、Thymeleaf、Velocity在性能上差别不...

code-ortaerc
38分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部