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

article/2025/10/13 4:48:59

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

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

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

 

相关报道:
疯狂的秒杀狂人
赠图一枚:

转载于:https://my.oschina.net/zhengyun/blog/82428


http://chatgpt.dhexx.cn/article/sAtuW2gU.shtml

相关文章

编译器是如何将高级语言转化成汇编语言的?

对于每天奋斗在一线,用Java,C,C#,Python等高级编程语言写程序的程序员们来说,理解编译器是如何将高级语言编译成汇编语言,有助于我们更好的理解计算机编程。 编译器将高级语言转化成汇编语言主要经过三个步…

【C语言】--编译及编译器

夫学须静也,才须学也;非学无以广才,非志无以成学 个人主页:【😊个人主页】 系列专栏:【❤️系列专栏】 文章目录 前言一.编译二.编译器Visual StudioClonDev C 三.创建c语言文件 前言 C语言一直以来都是初…

【汇编语言】

汇编语言 第二版 王爽 【Chapter 01 基础知识】 学习汇编的主要目的:通过用汇编语言进行编程而深入地理解计算机底层的基本工作机理,达到可以随心所欲地控制计算机的目的. 1.1 机器语言 1.2 汇编语言的产生 1.3 汇编语言的组成 (1) 汇编指令:机器码的助记符…

VS编译汇编语言

第一种方式肯定是嵌入汇编了,利用VS内置的__asm关键字,加入对汇编的支持,这种方式很简单,只需要简历一个普通工程,在工程中需要加入汇编的位置进行汇编处理。 第二种方式是利用VS编译纯汇编的程序,这种方式…

汇编语言软件编程

正确学习汇编语言的入门姿势 1.下载DOSBOX 2.下载MASM 3.在Visual Sdudio中下载这个插件ASMDUDE 链接:https://pan.baidu.com/s/1Q6iv63jNZEVkXS4Ghg8i8A 提取码:yqyy 福利已经给大家安排上了。 1.DOSBOX安装 DOSBOX安装后,默认是在C盘的路径…

一个小型的汇编编译器

train汇编器 本程序包含4个源文件与6个头文件,源文件约2200行代码,头文件共约500行,可识别并编译27项指令。 支持vs2013及更高版本 支持gcc 6.3.0及更高版本,gcc编译过程如图:(2019.7.26更新&#xff0c…

高级语言(C语言)、汇编语言、机器语言区别?编译器如何将高级语言编译成机器语言?

⾼级语⾔: 是相对于汇编语⾔⽽⾔的,是⾼度封装了的编程语⾔,与低级语⾔相对。它是以⼈类的⽇常语⾔为基础的⼀种编程语⾔,使⽤⼀般⼈易于接受的⽂字来表⽰(例如汉字、不规则英⽂或其他外语),从…

汇编语言使用的工具

现在我们的电脑大多数是win10系统的,64位操作系统。这个可以右键点击我的电脑,查看属性。 学习汇编语言,我们就要安装64位的汇编开发环境,这里是win764位汇编开发环境的安装。 1.把你的文件复制到电脑盘符。我的在电脑D盘 2.点击…

浅谈汇编器、编译器和解释器

作者: 硬核老王 简单介绍一下编程方式的历史演变。 -- Erik Oshaughnessy(作者) 在计算机诞生不久的早期年代,硬件非常昂贵,而程序员比较廉价。这些廉价程序员甚至都没有“程序员”这个头衔,并且常常是由数学家或者电…

编译器如何将高级语言转化成汇编语言的?

对于每天奋斗在一线,用Java,C,C#,Python等高级编程语言写程序的程序员们来说,理解编译器是如何将高级语言编译成汇编语言,有助于我们更好的理解计算机编程。 编译器将高级语言转化成汇编语言主要经过三个步…

编译器是什么

什么是编译器,查阅百度:编译器就是将“高级语言”翻译为“机器语言(低级语言)”的程序。那高级语言自然是指C#,C等一些高度抽象化的语言。而机器语言是直接用二进制代码指令表达的计算机语言,指令是用0和1组…

汇编语言是什么?

文章目录 基础定义汇编语言的语法 常用指令函数的调用机制函数的内部处理机制从汇编语言角度看多线程的安全问题 基础定义 助记符: 例如在加法运算的本地代码中加上 add(addition的缩写)、在比较运算的本地代码中加上 cmp(compar…

汇编语言和本地代码及通过编译器输出汇编语言的源代码

CSDN话题挑战赛第2期 参赛话题:学习笔记 目录 一、汇编语言和本地代码 二、通过编译器输出汇编语言的源代码 一、汇编语言和本地代码 计算机CPU只能运行本地代码(机器语言)程序,用C语言等高级语言编写的代码,需要经…

c-nasm简易的汇编语言编译器(nasm、nask语法)

c-nasm汇编器: GitHub - Changele08/c-nasm: 简易的汇编语言编译器 【基本信息】 简单的汇编语言编译器,源程序包含一个源文件,总共约为10000行(大部分为汇编指令->机器指令对照表) 使用devc5.11无错误无警告编…

记录:汇编语言编译器选择(vscode,永远的神)

我下了两个,一个是一个入门级的,要49块成为注册用户才能解锁全部功能,好像还容易崩。另一个是dosbox,太老了,界面交互性差,我因为安装过两次,出现了一些文件位置问题,运行总出bug&am…

03.汇编语言和编译器

机器指令 早期的程序设计均使用机器语言。程序员们将用0, 1数字编成的程序代码打在纸带或卡片上,1打孔,0不打孔,再将程序通过纸带机或卡片机输入计算机,进行运算。这样的机器语言由纯粹的0和1构成,十分复杂&#xff0…

软件测试报告

近期,老师给我们布置了一个任务,那就是软件的测试报告,刚刚接触测试报告的我,并不是很了解测试报告怎么写,我们又是如何进行测试的,这里,我将自己对测试的想法写在这里。 一、概述 本软件是根据…

【详解】服务可用性详细说明及其解决方案

该文章转自: 搜狐文章 链接 谈到高并发和高可用往往引起很多人的兴趣,有时候成为框架选择的噱头。实际上,它们往往和框架关系不大,而是跟架构息息相关。在很多时候,老码农会直面一个问题: “系统的服务可…

可用性并非阳春白雪

写代码?这个环节的工作其实不难。开发出人们真正想用的应用程序,然后把它们发布到用户手上,这才是难事! 长久以来,我一直着迷于Steve Krug的那本《Dont Make Me Think》。不仅因为那本书短小精悍,读来朗朗…

软件工程-需求分析

软件需求任务 功能需求 接口需求 性能需求 约束 可靠性和可用性需求 逆向需求 出错处理需求 将来可能提出的要求 功能需求(一定要有) 这方面的需求指定系统必须提供的服务。通过需求分析应该划分出系统必须完成的所有功能 性能需求(最好有) 性能需求指定系统必须满足的定时约束…