具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
除非上下文另有特定清楚的描述,本发明中的元件和组件,数量既可以单个的形式存在,也可以多个的形式存在,本发明并不对此进行限定。本发明中的步骤虽然用标号进行了排列,但并不用于限定步骤的先后次序,除非明确说明了步骤的次序或者某步骤的执行需要其他步骤作为基础,否则步骤的相对次序是可以调整的。可以理解,本文中所使用的术语“和/或”涉及且涵盖相关联的所列项目中的一者或一者以上的任何和所有可能的组合。
在一个实施例中,如图1所示,一种异常账号检测方法,该方法可依赖于计算机程序,能够运行于基于冯洛伊曼体系的计算机系统上。该计算机系统可以是互联网应用的服务器设备。
在本实施例中,如图1所示,该方法包括:
步骤S102,接收上传的业务请求,查找业务请求对应的发起帐号。
业务请求即用户使用的互联网应用的客户端向服务器发送的访问请求,用于向服务器要求提供相应的业务服务。发起账号即用户注册的互联网应用的账号。用户在通过客户端向服务器发送业务请求之前,需要先使用其注册的发起账号进行登录,登录后服务器即创建与客户端的会话。可根据接收到业务请求的连接查找到相应的会话,通过会话找到发起账号。
例如,业务请求可以是网页访问请求,用户可在登录网站后通过点击链接发起网页访问请求;业务请求也可以是即时通信消息请求,用户可在登录即时通信软件之后通过客户端向服务器发起即时通信消息请求,即时通信消息请求中可包含消息以及作为该消息的发送目标的关联账号,服务器接收该即时通信消息请求后即可将提取出消息并转发给相应的关联账号;业务请求也可以是客户端操作请求,用户使用客户端软件(例如游戏客户端)时,在客户端界面上对按钮和输入框的操作触发的事件产生的数据将由客户端通过客户端操作请求发送至服务器,服务器即可在会话中查找到在客户端上操作之前登录的发起账号。
步骤S104,从业务请求中提取相应的请求参数,请求参数包括至少一种行为标签,且行为标签的标签类型包括业务标识、时间区间、IP地址、发起位置、系统类型、版本标识、业务数据数值区间或关联账号中的至少一种。
如上所述,业务请求中包含多种参数信息(统称为请求参数),行为标签即为对应某个种类(即标签类型)的参数信息的具体的参数值。
例如,对于标签类型为业务标识的行为标签,在业务请求为网页访问请求的应用场景中,行为标签可以是用户点击的页面中链接的url。若用户点击了网页中3个链接,则对应发起3个业务请求,该三个业务请求在标签类型为业务标识下的行为标签即分别为该3个链接各自的url。而在业务请求为客户端操作请求的应用场景中,行为标签可以是客户端根据用户操作生成的指令的标识信息或该互联网应用定义的客户端与服务器通信的通信协议的标识信息。
对于标签类型为时间区间的行为标签,可以是服务器接收到业务请求时的时间戳。例如,可预先按小时设置时间区间,若服务器接收到3个业务请求时的时间戳分别为0点40分32秒、4点10分52秒、6点08分37秒,则时间戳分别位于0(即0点到1点之间的时间区间)、4(即4点到5点之间的时间区间)、6(即6点到7点之间的时间区间)三个时间戳内,相应的该三个业务请求在时间区间下的行为标签即分别为0、4和6。
对于标签类型为IP地址的行为标签,则行为标签可以是发起的业务请求的客户端的IP地址或IP地址段。
对于标签类型为发起位置的行为标签,则可预先按省、市、县或区划定地理位置局域,然后根据业务请求中IP地址的位置获取发起位置类型的行为标签。例如,若按省划定地理位置区域,则在接收到3个分别来自佛山市、宜昌市和北京市海淀区的业务请求时,该三个业务请求在标签类型为发起位置下的行为标签即分别为广东、湖北和北京。
对于标签类型为系统类型的行为标签,则可预先为根据安装客户端程序的终端的操作系统类型划分系统类型,然后根据业务请求中包含的终端的系统相关信息确定行为标签。例如,若接收到3个业务请求中包含的系统信息分别为android4.0、android4.4和ios7.0,则该三个业务请求在标签类型为系统类型下的行为标签即分别为android、android和ios。
对于标签类型为版本标识的行为标签,则可预先为根据客户端程序的版本信息进行划分,然后根据业务请求中包含的终端的版本信息确定行为标签。例如,若接收到3个业务请求中包含的版本信息分别为android4.0、android4.4和android4.2,则该三个业务请求在标签类型为版本标识下的行为标签即分别为4.0、4.4和4.2。
业务数据数值区间可以是金额区间。例如,在互联网应用为支付应用的应用场景中,对于标签类型为业务数据数值区间的行为标签,则可根据业务请求中包含的支付金额信息进行划分。例如,若预先划定支付金额0至500为A段,500至2000为B段,2000至10000为C段,10000至100000为D段,100000以上为E段,则若接收到3个业务请求中包含的支付金额分别为321、6663和23412,则该三个业务请求在标签类型为版本标识下的行为标签即分别为A、C和D。
业务数据数值区间也可以是资源下载/上传的数量区间。例如,在互联网应用为下载应用的应用场景中,对于标签类型为业务数据数值区间的行为标签,则可根据业务请求中包含的请求批量下载的资源的数量进行划分。例如,若预先划定下载数量0至5为A段,5至20为B段,20至100为C段,100至1000为D段,1000以上为E段,则若接收到3个批量下载请求中的要求下载的资源的数量分别为2、12和999,则该三个批量下载请求在标签类型为版本标识下的行为标签即分别为A、B和D。
也就是说,业务数据数值区间可以是业务请求中包含的与业务数据的数量相关的各种数值区间。在不同的应用场景中,并不限于上述两种数值区间类型。
在互联网应用为即时通信应用的应用场景中,对于标签类型为关联账号的行为标签,则可以是业务请求对应的关联账号的数量。例如,若三个业务请求分别为:给1个指定的好友发消息,给5个指定的好友发消息,给所有200个好友发消息,则该三个业务请求在标签类型为关联账号下的行为标签即分别为1、5、200。
需要说明的是,行为标签的标签类型并不限于上述的业务标识、时间区间、IP地址、发起位置、系统类型、版本标识、业务数据数值区间或关联账号等类型,在其他实施例中,还可根据业务请求中的参数设置行为标签的类型。例如,若客户端与服务器之间预先定义有较复杂的通信协议,客户端向服务器发送的业务请求中需要按照该通信协议限定的方式包含多种属性值,则也可按照通信协议的规定的属性值设置行为标签的标签类型。
例如,在网络游戏应用场景中,游戏客户端和服务器之间预设的游戏通信协议中预先限定了业务请求中需要添加显卡类型和当前帧数的属性值,则可将显卡类型和当前帧数作为行为标签的标签类型进行设置。
步骤S106,根据请求参数更新与发起账号对应的统计信息,统计信息包括与行为标签各自对应的访问次数。
统计信息可存储在数据库中,更新与发起账号对应的统计信息即根据由接收到的业务请求提取的多个业务标签更新数据库中业务标签的访问次数。
例如,若请求参数包括业务标识和时间区间两种标签类型(实际中不限于该两种标签类型,在此为方便描述),则在业务请求包含的行为标签为submit(表示用户在客户端输入了提交指令)和4(表示接收到该业务请求的时间戳位于4至5点之间),则可在数据库中将标签类型为业务标识下的行为标签submit对应的访问次数加1,将标签类型为时间区间下的行为标签4对应的访问次数加1,而其他的行为标签,例如标签类型为时间区间下的行为标签5对应访问次数则保持不变。
步骤S108,根据统计信息判断发起账号是否为异常账号。
在本实施例中,如图2所示,根据统计信息判断发起账号是否为异常账号的步骤包括:
步骤S202,获取请求参数中的行为标签,获取其各自对应的访问次数,筛选出其各自对应的访问次数大于第一阈值的行为标签。
在本实施例中,可获取请求参数中行为标签各自对应的标签类型,获取与各个标签类型对应的第一阈值,筛选出其各自对应的访问次数大于其标签类型对应的第一阈值的行为标签。
步骤S204,获取标签类型的第一数量和筛选出的行为标签的第二数量,根据第一数量和第二数量判定发起账号是否为异常账号。
在本实施例中,可根据第一数量和第二数量判定所述发起账号是否为异常账号的步骤为:计算第二数量和所述第一数量的比值,判断比值是否小于第二阈值,若是,则将发起账号判定为异常账号。
例如,在一个web应用场景中,由网页访问请求中提取的行为标签包括业务标识、时间区间、IP地址和发起位置4种,分别为:
业务标识:\home
时间区间:4
IP地址:61.135.169.125
发起位置:北京
则可在统计信息中查找该4个行为标签各自对应的访问次数,并获取与每个标签类型对应的第一阈值,如表1所示:
表1
标签类型 |
行为标签 |
访问次数 |
第一阈值 |
业务标识 |
\home |
929 |
423 |
时间区间 |
4 |
2 |
333 |
IP地址 |
61.135.169.125 |
223 |
123 |
发起位置 |
北京 |
1029 |
433 |
由表1可看出,标签类型一共有4种,即第一数量为4;而大于各自对应的第一阈值的行为标签有3个,即第二数量为3。因此,第二数量和第一数量的比值为3/4=0.75,若第二阈值设置为0.6,则该网页访问请求对应的发起账号为正常账号,因为仅仅有时间区间下的行为标签有异常情况,但很可能是该用户熬夜4点上网看体育直播,因此该发起账号为异常账号的几率较小。
但是,若在该例中,IP地址和发起位置的行为标签分别为新疆的IP和位置,且访问次数小于各自的第一阈值,则第二数量为1,第二数量和第一数量的比值为1/4=0.25小于0.6,则可将该网页访问请求对应的发起账号为异常账号。因为注册该账号的用户通常不会离开其常驻地,并在凌晨4点进行活动,因此该发起账号为异常账号的几率较大。
在本实施例中,第一阈值可以是动态设置的阈值,也可根据统计信息中的访问次数计算得出。例如,可遍历统计信息中的标签类型,查找与遍历到的标签类型对应的行为标签及其对应的访问次数,并生成与遍历到的标签类型对应的访问次数分布;根据访问次数分布计算与遍历到的标签类型对应的第一阈值。
优选的,可获取标签类型下的所有行为标签的访问次数之和N以及第一数目M,可根据N和M的比值计算第一阈值,例如,可根据公式:
F=a×N/M+b
计算某个标签类型对应的第一阈值F。其中N为该标签类型下的所有行为标签的访问次数之和,M该标签类型的第二数量,a和b为预设的调节因子。
例如,若标签类型为系统类型,且系统类型下的行为标签为android、ios、wp(windows phone)和其他,且其访问次数分布如图3中的柱状图所示:
android:964(96.4%);
ios:23(2.3%);
wp:11(1.1%);
其他:2(0.2%);
则第一阈值可设置为250。
在另一个实施例中,也可先计算某个标签类型下所有行为标签的访问次数的均值和方差,若方差小于预设的值,则可将该标签类型对应的第一阈值设置为小于访问次数最小值的值。
例如,若标签类型为业务类型,其访问次数分布如图4中的柱状图所示,每种业务类型的访问次数分布较平均,而访问次数最小值为行为标签A的访问次数,则可将第一阈值设置为小于该访问次数的值。也就是说,可不参考该行为标签。
若方差大于预设的值,则可先过滤掉访问次数与前述计算的均值之差小于预设的值的行为标签,然后将过滤后的行为标签对应的访问次数的最小值作为第一阈值。例如,若标签类型为时间区间,其访问次数分布如图5中的柱状图所示,则0至8的访问次数过少,可先排除,然后将行为标签10的访问次数设置为第一阈值。
需要说明的是,计算第一阈值的方法并不限于上述介绍的方案,管理员可根据实际需要动态地调整第一阈值的计算方法。且计算第一阈值的步骤可在每接收到业务请求时执行,也可定期或在接收到业务请求的次数达到一定值时进行计算(因为单一的业务请求在统计中通常不会影响整体的访问次数分布,而定期或在接收到业务请求的次数达到一定值时进行计算可减少频繁计算第一阈值带来的性能损耗)。
在判定了发起账号为异常账号之后,服务器可将客户端的业务请求暂停处理,并返回认证问题。认证问题可以是用户注册账号时填写的密码保护问题,例如身份证号、父母姓名、毕业院校等相关的问题。客户端可通过页面或窗口展示问题,并将用户输入的认证答案返回给服务器进行校验,若服务器校验通过,则表示该发起账号为正常账号,从而继续执行该业务请求。且可为该会话设置发起账号为正常账号的标记,即由该会话接收到的业务请求均为正常账号所发起,不需要对其是否为异常账号进行判定(统计信息仍要更新)。也可设置一个定时器,例如在一周之内,不在对该发起账号进行判定。
在一个实施例中,如图6所示,一种异常账号检测装置,包括请求接收模块102、标签提取模块104、统计信息更新模块106和异常判定模块108,其中:
一种异常账号检测装置,包括:
请求接收模块102,用于接收上传的业务请求,查找业务请求对应的发起帐号。
标签提取模块104,用于从业务请求中提取相应的请求参数,请求参数包括至少一种行为标签,且行为标签的标签类型包括业务标识、时间区间、IP地址、发起位置、系统类型、版本标识、业务数据数值区间或关联账号中的至少一种。
统计信息更新模块106,用于根据请求参数更新与发起账号对应的统计信息,统计信息包括与行为标签各自对应的访问次数。
异常判定模块108,用于根据统计信息判断发起账号是否为异常账号。
在本实施例中,异常判定模块108还用于获取请求参数中的行为标签,获取其各自对应的访问次数,筛选出其各自对应的访问次数大于第一阈值的行为标签;获取标签类型的第一数量和筛选出的行为标签的第二数量,根据第一数量和第二数量判定发起账号是否为异常账号。
在本实施例中,异常判定模块108还用于计算第二数量和第一数量的比值,判断比值是否小于第二阈值,若是,则将发起账号判定为异常账号。
在本实施例中,异常判定模块108还用于获取请求参数中行为标签各自对应的标签类型,获取与各个标签类型对应的第一阈值,筛选出其各自对应的访问次数大于其标签类型对应的第一阈值的行为标签。
在本实施例中,如图6所示,异常账号检测装置还包括阈值计算模块110,用于遍历统计信息中的标签类型,查找与遍历到的标签类型对应的行为标签及其对应的访问次数,并生成与遍历到的标签类型对应的访问次数分布;根据访问次数分布计算与遍历到的标签类型对应的第一阈值。
上述异常账号检测方法和装置基于发起账号对应的历史发送的业务请求中包含的行为标签的访问次数的统计信息对发起账号进行判定,和传统技术中基于IP段的模拟测试方法相比,直接关注发起账号的业务请求历史记录,不会造成对IP段进行封杀时,对该IP段下子网中的其他正常账号进行封杀,从而提高了准确性。且根据请求参数中提取的多种行为标签的访问次数进行判定,可参考用户的历史访问记录,即该用户的浏览兴趣和操作习惯,由于盗号者使用异常账号的操作习惯通常与该账号的用户使用时的操作习惯相差较大,因此,检测异常账号的准确性也得到提高。
在一个实施例中,如图7所示,提供了一种可运行前述异常账号检测方法的服务器结构示意图,该服务器结构可应用于互联网应用的服务器上。该服务器500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)522(例如,一个或一个以上处理器)和存储器532,一个或一个以上存储应用程序542或数据544的存储介质530(例如一个或一个以上海量存储设备)。其中,存储器532和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个或一个以上模块(如前述的请求接收模块102、标签提取模块104、统计信息更新模块106和异常判定模块108),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器522可以设置为与存储介质530通信,在服务器500上执行存储介质530中的一系列指令操作。服务器500还可以包括一个或一个以上电源526,一个或一个以上有线或无线网络接口550,一个或一个以上输入输出接口558,和/或,一个或一个以上操作系统541,例如Windows ServerTM,Mac OSXTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述图1所示实施例中所述的由服务器所执行的步骤可以基于该图7所示的服务器结构。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。