HTTP接口访问权限验证方法、系统、及服务器与流程

文档序号:15624932发布日期:2018-10-09 22:44阅读:2254来源:国知局
本发明涉及网络安全领域,特别是涉及一种http接口访问权限验证方法、系统、及服务器。
背景技术
::当前有许多api接口都是基于http协议的,因此接口的安全性是我们对api接口的最基本的要求。实现接口安全有许多策略,如token验证、防盗用和访问频率限制等,这就需要在api接口提供数据前先经过api权限验证模块,拒绝非法的、暴力的接口调用,以保证能提供正常稳定的接口服务给客户。现有的api权限验证系统中,利用用户调用接口时带的随机数来实现防盗用(即随机数重复性校验)和访问频率限制,使用传统的如mysql数据库存储token和随机数的数据存在以下弊端:(1)mysql数据库连接和查询都会消耗较多时间,导致接口响应慢,特别是查询随机数访问数据时,跨表查询性能成为瓶颈(2)mysql数据库承受的并发查询数有限,频繁调用会占用系统资源,并且容易导致token基础表的锁表问题(3)频繁调用接口导致mysql数据库不稳定,从而影响了接口的稳定性。技术实现要素:鉴于以上所述现有技术的缺点,本发明的目的在于提供一种http接口访问权限验证方法、系统、及服务器,用于解决现有技术中接口访问不能快速且稳定的响应的问题。为实现上述目的及其他相关目的,本发明提供一种http接口访问权限验证方法、系统、及服务器,一种http接口访问权限验证方法,其特征在于,应用于一服务器中,所述方法包括:在所述服务器中新建一缓存;从预设的数据库中同步基础数据至所述缓存,将所述基础数据根据同步set、同步hashtable及同步treemap中的任意一种数据结构进行存储;接受一用户对所述http接口的访问请求;根据存储的所述基础数据对所述访问请求进行验证,以根据验证结果判断是否接受所述用户对所述http接口的访问。于本发明一具体实施例中,所述基础数据包括对应所述用户的token表、接口配置表、接口次数限制表、以及接口随机数访问表中的任意一或多种,所述访问请求中包括随机数。于本发明一具体实施例中,所述访问请求包括md5值,所述根据存储的所述基础数据对所述访问请求进行验证的步骤还包括:将所述随机数的长度与预设的随机数长度阈值进行比较,且将所述md5值与预设的key的长度阈值进行比较,当所述随机数的长度小于所述随机数长度阈值且所述md5值等于所述key长度阈值时,继续执行下一步骤,否则验证失败;将与所述访问请求的token与所述随机数进行md5加密,当所述加密结果与所述key值相同时继续执行下一步骤,否则验证失败;根据所述接口次数限制表,判断当前的访问是否超过预设时间段内的访问次数,当没超过时,继续执行下一步骤,否则验证失败;根据所述接口随机数访问表,判断所述随机数是否与预设时间段内的随机数相同,当不存在相同时,验证通过,允许对所述http接口的访问,且将所述访问请求对应的随机数添加于所述接口随机数访问表中,否则验证失败。于本发明一具体实施例中,所述基础数据还包括管理员集合,所述管理员集合包括用户参数,所述根据存储的所述基础数据对所述访问请求进行验证的步骤还包括:在判断所述随机数不与预设时间段内的随机数相同时,继续判断所述用户关联的用户参数是否存在于所述管理员集合中,当为是时,允许对所述http接口的访问;且将所述访问请求对应的随机数添加于所述接口随机数访问表中;否则继续验证用户参数和域名参数的关联。于本发明一具体实施例中,所述基础数据还包括具有域名参数的域名表,当所述用户关联的用户参数不存在于所述管理员集合中时,继续判断该用户对应的域名参数是否存在于所述域名表中,若是,则允许对所述http接口的访问;且将所述访问请求对应的随机数添加于所述接口随机数访问表中;否则验证失败。于本发明一具体实施例中,所述接口随机数访问表中包括对应所述用户的允许访问的访问请求的随机数以及访问所述http接口的时间戳。于本发明一具体实施例中,当通过一可视化平台对所述基础数据进行新增、修改、和/或删除的操作时,根据发生的所述操作对所述缓存中的基础数据进行增量加载。于本发明一具体实施例中,以预设的时间周期从所述数据库中同步所述基础数据。为实现上述目的及其他相关目的,本发明还提供一种http接口访问权限验证系统,应用于一服务器中,所述系统包括:缓存新建模块,用以在所述服务器中新建一缓存;同步模块,用以从预设的数据库中同步基础数据至所述缓存,且将所述基础数据根据同步set、同步hashtable及同步treemap中的任意一种数据结构进行存储;访问请求接收模块,用以接受一用户对所述http接口的访问请求;权限验证模块,用以根据存储的所述基础数据对所述访问请求进行验证,以根据验证结果判断是否允许所述用户对所述http接口的访问。为实现上述目的及其他相关目的,本发明还提供一种服务器,应用如上任一项所述的http接口访问权限验证方法。如上所述,本发明的http接口访问权限验证方法、系统、及服务器,其中,方法包括:在所述服务器中新建一缓存;从预设的数据库中同步基础数据至所述缓存,且将所述基础数据根据同步set、同步hashtable及同步treemap中的任意一种数据结构进行存储;接受一用户对所述http接口的访问请求;根据存储的所述基础数据对所述访问请求进行验证,以根据验证结果判断是否接受所述用户对所述http接口的访问。其中,将基础数据存储于服务器中新建的缓存中,可提高基础数据的读取速率,且将基础数据根据同步treemap数据结构进行存储,解决跨表查询瓶颈和读写冲突的锁表问题,保证线程安全。本发明的运行效率以及安全性能均较高,可提高接口的稳定性。附图说明图1显示为本发明的http接口访问权限验证方法在一具体实施例中的流程示意图。图2显示为本发明的http接口访问权限验证方法在一具体实施例中的应用示意图。图3显示为本发明的一具体实施例中接口随机数访问表的结构示意图。图4显示为本发明的http接口访问权限验证系统在一具体实施例中的模块示意图。元件标号说明10方法11~14步骤40访问权限验证系统41缓存新建模块42同步模块43访问请求接收模块44权限验证模块具体实施方式以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图示中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。为了使本发明之叙述更加详尽与完备,可参照附图及以下所述之各种实施例。但所提供之实施例并非用以限制本发明所涵盖的范围;步骤的描述亦非用以限制其执行之顺序,任何由重新组合,所产生具有均等功效的装置,皆为本发明所涵盖的范围。于实施方式与申请专利范围中,除非内文中对于冠词有所特别限定,否则「一」与「该」可泛指单一个或复数个。将进一步理解的是,本文中所使用的「包含」、「包括」、「具有」及相似词汇,指明其所记载的特征、区域、整数、步骤、操作、组件与/或组件,但不排除其所述或额外的其一个或多个其它特征、区域、整数、步骤、操作、组件、组件,与/或其中之群组。关于本文中所使用的「网络」泛指具有结构关系、组成关系、连接关系、通信关系、运算关系、或逻辑关系的实体元件或抽象元件的关系组合,不局限于实际的通信网络。请参阅图1,显示为本发明的http接口访问权限验证方法在一具体实施例中的流程示意图。所述方法10应用于一服务器中,所述方法10包括:11:在所述服务器中新建一缓存;12:从预设的数据库中同步基础数据至所述缓存,且将所述基础数据同步set、同步hashtable及同步treemap中的任意一种数据结构进行存储;即在首次新建缓存后,进行全量加载。优选的,以预设的时间周期从所述数据库中同步所述基础数据。于一具体应用中,采用自建的javacache作为基础数据的二级缓存。13:接受一用户对所述http接口的访问请求;14:根据存储的所述基础数据对所述访问请求进行验证,以根据验证结果判断是否接受所述用户对所述http接口的访问。于本具体实施例中,所述基础数据包括对应所述用户的token表、接口配置表、接口次数限制表、以及接口随机数访问表中的任意一或多种,所述访问请求中包括随机数。优选的,所述访问请求还包括md5值。所述根据存储的所述基础数据对所述访问请求进行验证的步骤还包括:将所述随机数的长度与预设的随机数的长度阈值进行比较,且将所述md5值的长度与预设的key的长度阈值进行比较,当所述随机数的长度小于所述随机数长度阈值且所述md5值的长度等于所述key的长度阈值时,继续执行下一步骤,否则验证失败;将与所述访问请求的token与所述随机数进行md5加密,当所述加密结果与所述md5值相同时继续执行下一步骤,否则验证失败;根据所述接口次数限制表,判断当前的访问是否超过第一预设时间段内的访问次数,当没超过时,继续执行下一步骤,否则验证失败;根据所述接口随机数访问表,判断所述随机数是否与一第二预设时间段内的随机数相同,当不存在相同时,验证通过,允许对所述http接口的访问,且将所述访问请求对应的随机数添加于所述接口随机数访问表中,且同时更新所述用户在所述第一预设时间段内对所述http接口的访问次数,否则验证失败。所述根据存储的所述基础数据对所述访问请求进行验证的流程具体如图2所示,其中,所述随机数为r,所述随机数长度阈值取25,且所述随机数阈值的选取可根据需要自定义调整。所述md5值的长度为k,于本实施例中,所述k的取值为32。于本发明一具体实施例中,进一步的,所述基础数据还包括管理员集合,所述管理员集合包括用户参数,且参阅图2,所述根据存储的所述基础数据对所述访问请求进行验证的步骤还包括:在判断所述随机数不与一第二预设时间段内的随机数相同时,继续判断所述用户关联的用户参数是否存在于所述管理员集合中,当为是时,允许对所述http接口的访问;且将所述访问请求对应的随机数添加于所述接口随机数访问表中;否则验证失败。于本发明一具体实施例中,进一步的,所述基础数据还包括具有域名参数的域名表,且参阅图2,当所述用户关联的用户参数不存在于所述管理员集合中时,继续判断该用户对应的域名参数是否存在于所述域名表中,若是,则允许对所述http接口的访问;且将所述访问请求对应的随机数添加于所述接口随机数访问表中,且同时更新所述用户在所述第一预设时间段内对所述http接口的访问次数;否则验证失败。于本发明一具体实施例中,所述接口随机数访问表中包括对应所述用户的允许访问的访问请求的随机数以及访问所述http接口的时间戳。所述接口随机数访问表的结构如图3所示。所述接口随机数访问表以同步treemap数据结构进行存储,且封装的同步treemap可供读锁和写锁,以实现线程安全;且同步的treemap的key是访问所述http接口时的时间戳,value是随机数,api访问时会向map插入键值对。所述同步treemap产生的随机数集合能够进行随机数重复性校验;本实施例中,通过对同步treemap的键进行逆序遍历,可以统计出一段时间内的访问次数,从而达到一段时间内访问频率的校验。例如,每五分钟进行一次访问频率的校验。封装的同步treemap具有value查重、有序key范围内value的计数、以及过期的key清除功能。例如,当key存在超过五分钟后,将其进行清除。于本发明一具体实施例中,当通过一可视化平台对所述基础数据进行新增、修改、和/或删除的操作时,根据发生的所述操作对所述缓存中的基础数据进行增量加载。且所述增量加载是http接口权限验证实时性的保证。所述方法10具有如下几点改进:(1)基础数据如token数据采用自建的二级缓存javacache来存储,定期同步数据库中最新的配置信息,提高基础数据读取效率;(2)随机数访问数据采用同步的treemap即syschronizedtreemap数据结构存储,解决跨表查询瓶颈和读写冲突的锁表问题,保证线程安全;(3)本发明在效率和安全性方面提升,提高接口的稳定性。进一步参阅4,显示为本发明的http接口访问权限验证系统在一具体实施例中的模块示意图。所述系统40应用于一服务器中,所述系统40包括:缓存新建模块41,用以在所述服务器中新建一缓存;同步模块42,用以从预设的数据库中同步基础数据至所述缓存,且将所述基础数据根据同步set、同步hashtable及同步treemap中的任意一种数据结构进行存储;访问请求接收模块43,用以接受一用户对所述http接口的访问请求;权限验证模块44,用以根据存储的所述基础数据对所述访问请求进行验证,以根据验证结果判断是否允许所述用户对所述http接口的访问。所述http接口访问权限验证系统40为与所述http接口访问权限验证方法10对应的系统项,两者技术方案一一对应,所有关于所述http接口访问权限验证方法10的描述均可应用于本实施例中,在此不加赘述。综上所述,本发明的http接口访问权限验证方法、系统、及服务器,其中,方法包括:在所述服务器中新建一缓存;从预设的数据库中同步基础数据至所述缓存,且将所述基础数据根据同步treemap数据结构进行存储;接受一用户对所述http接口的访问请求;根据存储的所述基础数据对所述访问请求进行验证,以根据验证结果判断是否接受所述用户对所述http接口的访问。其中,将基础数据存储于服务器中新建的缓存中,可提高基础数据的读取速率,且将基础数据根据同步treemap数据结构进行存储,解决跨表查询瓶颈和读写冲突的锁表问题,保证线程安全。本发明的运行效率以及安全性能均较高,可提高接口的稳定性。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属
技术领域
:中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1