一种请求处理方法、请求处理装置及计算机可读存储介质
文献发布时间:2023-06-19 10:08:35
技术领域
本申请涉及计算机技术领域,尤其涉及一种请求处理方法、一种请求处理装置以及一种计算机可读存储介质。
背景技术
随着互联网技术的飞速发展,web应用程序应运而生,由于web应用程序具有部署简单、交互性好、支持跨平台操作等特点,web应用程序得到了越来越广泛的应用,但与此同时,web应用程序也受到越来越多的安全威胁。
目前,web应用程序中一般采用硬件防护设备、软件防护系统等进行防护,例如,web应用程序采用WAF(Web Application Firewall,Web应用防火墙)对web应用程序接收到的合法请求或非法请求进行匹配过滤。在安全防护过程中,硬件防护设备和软件防护系统等安全防护机制容易出现错误拦截,导致合法请求被拦截;另外硬件防护设备和软件防护系统等仅仅通过更新规则库来实现新型安全漏洞的拦截和防护,规则库中未包含的安全漏洞将不能被拦截和防护;因此,硬件设备和软件系统等安全防护机制在防护效率、防护准确率等方面均存在不足。
发明内容
本申请实施例提供了一种请求处理方法、请求处理装置及计算机可读存储介质,能够提升请求校验结果的准确率、请求校验效率,从而提升对应用程序的防护准确率、防护效率。
第一方面,本申请实施例提供一种请求处理方法,该请求处理方法包括:
当接收到对应用程序的目标访问请求时,在数据表中确定目标访问请求对应的预设请求处理路径,数据表包括应用程序的至少一种访问请求中每种访问请求对应的预设请求处理路径;
根据安全防护机制获取对目标访问请求的实际请求处理路径,安全防护机制是预先注入到应用程序的源代码中的;
根据实际请求处理路径和目标访问请求对应的预设请求处理路径,对目标访问请求进行校验,得到校验结果;
根据校验结果确定对目标访问请求的响应策略。
第二方面,本申请实施例提供一种请求处理装置,该请求处理装置包括:
确定单元,用于当接收到对应用程序的目标访问请求时,在数据表中确定目标访问请求对应的预设请求处理路径,数据表包括应用程序的至少一种访问请求中每种访问请求对应的预设请求处理路径;
获取单元,用于根据安全防护机制获取对目标访问请求的实际请求处理路径,安全防护机制是预先注入到应用程序的源代码中的;
校验单元,用于根据实际请求处理路径和目标访问请求对应的预设请求处理路径,对目标访问请求进行校验,得到校验结果;
确定单元,还用于根据校验结果确定对目标访问请求的响应策略。
第三方面,本申请实施例提供一种请求处理设备,该请求处理设备包括:
处理器,适于实现计算机程序;以及,
存储器,存储有计算机程序,计算机程序适于由处理器加载并执行上述的请求处理方法。
第四方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被计算机设备的处理器读取并执行时,使得计算机设备执行上述的请求处理方法。
本申请实施例中,当接收到对应用程序的目标访问请求时,可以在数据表中确定目标访问请求对应的预设请求处理路径,还可以根据预先注入到应用程序的源代码中的安全防护机制监控对目标访问请求的实际请求处理路径,通过实际请求处理路径和目标访问请求对应的预设请求处理路径对目标访问请求进行校验,能够有效提升请求校验结果的准确率,从而有效提升对应用程序的防护准确率;另外,数据表中存储有应用程序的至少一种访问请求中每种访问请求对应的预设请求处理路径,当接收到对应用程序的目标访问请求时能够快速在数据表中确定出目标访问请求对应的预设请求处理路径,在一定程度上提升了请求校验效率,从而提升了对应用程序的防护效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种请求处理系统的架构示意图;
图2是本申请实施例提供的一种请求处理方法的流程示意图;
图3是本申请实施例提供的另一种请求处理方法的流程示意图;
图4是本申请实施例提供的一种安全防护机制注入结果的示意图;
图5是本申请实施例提供的一种目标访问请求与数据处理路径的对应关系示意图;
图6是本申请实施例提供的一种请求处理装置的结构示意图;
图7是本申请实施例提供的一种请求处理设备的结构示意图。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参见图1,图1是本申请实施例提供的一种请求处理系统的架构示意图,该请求处理系统10包括终端101和服务器102。其中,终端101可以是移动终端、个人计算机(Personal Computer,PC)端或者便携式电脑(Tablet PersonalComputer,Tablet PC)端等等,本申请实施例对此不作限定。服务器102可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器,本申请实施例在此不作限制。终端101与服务器102之间可以通过有线通信或者无线通信的方式进行直接或间接地连接,本申请在此不做限制。
在由终端101和服务器102组成的请求处理系统10中,当接收到终端101对应用程序的目标访问请求时,服务器102可以在数据表中确定目标访问请求对应的预设请求处理路径,并根据预先注入到应用程序的源代码中的安全防护机制获取对目标访问请求的实际请求处理路径,服务器102可以根据实际请求处理路径和目标访问请求对应的预设请求处理路径,对目标访问请求进行校验,得到校验结果,并根据校验结果确定对目标访问请求的响应策略。
其中,本申请实施例提及的应用程序可以是指web(World Wide Web,万维网)应用程序,web应用程序是一种可以通过web访问的应用程序,web应用程序的最大好处是使用该web应用程序的用户很容易访问应用程序,用户所使用的终端101中只需要安装有浏览器即可,不需要再安装其他软件。
数据表中可以包括应用程序的至少一种访问请求中每种访问请求对应的预设请求处理路径。至少一种访问请求可以是指应用程序可能接收到的所有类型的访问请求,至少一种访问请求还可以是指应用程序可能接收到的部分类型的访问请求,例如,至少一种访问请求可以包括用户登录请求,用户查询请求、用户更新请求等等。
每一条预设请求处理路径包括位于路径起点的请求处理方法、位于路径起点与路径终点之间的至少一个数据处理方法、位于路径终点的返回数据方法,以及至少一个数据处理方法之间的调用顺序。实际请求处理路径可以包括位于路径起点的第一实际请求处理方法、位于路径起点与路径终点之间的至少一个第一实际数据处理方法、位于路径终点的第一实际返回数据方法,以及至少一个第一实际数据处理方法之间的调用顺序。
在一种实现方式中,目标访问请求中不携带需要校验的数据,服务器102可以通过判断实际请求处理路径和目标访问请求对应的预设请求处理路径是否相同,对目标访问请求进行校验。当实际请求处理路径和目标访问请求对应的预设请求处理路径相同时,服务器102生成对目标访问请求校验成功的校验结果。当实际请求处理路径和目标访问请求对应的预设请求处理路径不相同时,服务器102生成对目标访问请求校验失败的校验结果。当校验结果为对目标访问请求校验成功时,对目标访问请求进行响应;当校验结果为对目标访问请求校验失败时,拒绝对目标访问请求进行响应,并向终端101输出告警页面,告警页面用于提示目标访问请求被阻止。
例如,目标访问请求是用户查询请求,用户查询请求中不携带需要校验的数据,服务器102通过判断实际请求处理路径和用户查询请求对应的预设请求处理路径是否相同,对用户查询请求进行校验。当对用户查询请求校验成功时,对用户查询请求进行响应,并向终端101返回用户查询请求所请求的数据。当对用户查询请求校验失败时,拒绝对用户查询请求进行响应,并向终端101输出告警页面,告警页面用于提示用户查询请求被阻止。
在另一种实现方式中,目标访问请求中携带需要校验的数据(即下文中的第一数据),服务器102可以通过判断实际请求处理路径和目标访问请求对应的预设请求处理路径是否相同,以及判断第一实际返回数据方法所返回的第二数据与第一数据是否相同,对目标访问请求进行校验。当目标访问请求对应的预设请求处理路径与实际请求处理路径相同,且第二数据与第一数据相同时,生成对目标访问请求校验成功的校验结果。当目标访问请求对应的预设请求处理路径与实际请求处理路径不相同;或者,当第二数据与第一数据不相同;或者,当目标访问请求对应的预设请求处理路径与实际请求处理路径不相同以及第二数据与第一数据不相同时,生成对目标访问请求校验失败的校验结果。当校验结果为对目标访问请求校验成功时,对目标访问请求进行响应;当校验结果为对目标访问请求校验失败时,拒绝对目标访问请求进行响应,并向终端101输出告警页面,告警页面用于提示目标访问请求被阻止。
例如,目标访问请求是用户登录请求,用户登录请求中携带需要校验的数据,例如用户的登录信息(例如用户账号、密码等等);服务器102通过判断实际请求处理路径和用户登录请求对应的预设请求处理路径是否相同,以及判断用户登录请求中携带的用户信息与第一实际返回数据方法所返回的用户信息,对用户查询请求进行校验。当对用户登录请求校验成功时,对用户登录请求进行响应,允许终端101登录应用程序。当对用户登录请求校验失败时,拒绝对用户登录请求进行响应,并向终端101输出告警页面,告警页面用于提示用户查询请求被阻止。
可以理解的是,本申请实施例描述的请求处理系统是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着系统架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请实施例中,当接收到终端101对应用程序的目标访问请求时,服务器102可以在数据表中确定目标访问请求对应的预设请求处理路径,还可以根据预先注入到应用程序的源代码中的安全防护机制监控对目标访问请求的实际请求处理路径,服务器102通过实际请求处理路径和目标访问请求对应的预设请求处理路径对目标访问请求进行校验,能够有效提升请求校验结果的准确率,从而有效提升对应用程序的防护准确率;另外,数据表中存储有应用程序的至少一种访问请求中每种访问请求对应的预设请求处理路径,当接收到终端101对应用程序的目标访问请求时,服务器102能够快速在数据表中确定出目标访问请求对应的预设请求处理路径,在一定程度上提升了请求校验效率,从而提升了对应用程序的防护效率。
请参见图2,图2是本申请实施例提供的一种请求处理方法的流程示意图,该请求处理方法可以由图1所示的请求处理系统10中的服务器102执行,该请求处理方法可以包括以下步骤S201至步骤S204:
步骤S201,当接收到对应用程序的目标访问请求时,在数据表中确定目标访问请求对应的预设请求处理路径。
数据表中可以包括应用程序的至少一种访问请求中每种访问请求对应的预设请求处理路径,数据表中还可以包括每种访问请求对应的预设请求处理路径的请求处理方法,每种访问请求的预设请求处理路径与该访问请求的请求处理方法对应。数据表的具体建立过程可以参见图3所示实施例中步骤S302至步骤S303的描述,在此不再赘述。
目标访问请求可以是URL(Uniform Resource Locator,统一资源定位器),当接收到对应用程序的目标访问请求时,可以根据目标访问请求中的请求参数确定目标访问请求对应的请求处理方法,再根据请求处理方法在数据表中确定与该请求处理方法对应的预设请求处理路径,即在数据表中确定目标访问请求对应的预设请求处理路径。例如,URL为“https://www.example.com/login/”,可以根据URL中的请求参数“login”确定该URL对应的请求处理方法(例如可以是login()方法),再根据请求处理方法在数据表中确定与该请求处理方法对应的预设请求处理路径,即在数据表中确定目标访问请求对应的预设请求处理路径。
步骤S202,根据安全防护机制获取对目标访问请求的实际请求处理路径。
安全防护机制可以是预先注入到应用程序的源代码中的,具体地,安全防护机制可以是在应用程序的开发阶段、在对应用程序进行编译的阶段或者在对应用程序进行解释运行的阶段注入到应用程序的源代码中的。安全防护机制的具体注入过程可以参见图3所示实施例中步骤S301的描述,在此不再赘述。
步骤S203,根据实际请求处理路径和目标访问请求对应的预设请求处理路径,对目标访问请求进行校验,得到校验结果。
在一种实现方式中,可以通过判断目标访问请求对应的预设请求处理路径与实际请求处理路径是否相同,对目标访问请求进行校验。若目标访问请求对应的预设请求处理路径与实际请求处理路径相同,则生成对目标访问请求校验成功的校验结果;若目标访问请求对应的预设请求处理路径与实际请求处理路径不相同,则生成对目标访问请求校验失败的校验结果。具体地,目标访问请求对应的预设请求处理路径与实际请求处理路径相同可以是指:预设请求处理路径中包括的各个方法与实际请求处理路径中包括的各个方法相同,并且预设请求处理路径中包括的各个方法的调用顺序与实际请求处理路径中包括的各个方法的调用顺序相同。目标访问请求对应的预设请求处理路径与实际请求处理路径不相同可以是指:预设请求处理路径中包括的各个方法与实际请求处理路径中包括的各个方法不相同;或者,预设请求处理路径中包括的各个方法的调用顺序与实际请求处理路径中包括的各个方法的调用顺序不相同;或者,预设请求处理路径中包括的各个方法与实际请求处理路径中包括的各个方法不相同,并且预设请求处理路径中包括的各个方法的调用顺序与实际请求处理路径中包括的各个方法的调用顺序不相同。
例如,目标访问请求对应的预设请求处理路径为“请求处理方法1→数据处理方法1→数据处理方法2→返回数据方法1”,目标访问请求对应的实际请求处理路径为“请求处理方法1→数据处理方法1→数据处理方法3→返回数据方法1”,预设请求处理路径中包括的各个方法与实际请求处理路径中包括的各个方法不相同,确定对目标访问请求校验失败。又如,目标访问请求对应的预设请求处理路径为“请求处理方法1→数据处理方法1→数据处理方法2→返回数据方法1”,目标访问请求对应的实际请求处理路径为“请求处理方法1→数据处理方法2→数据处理方法1→返回数据方法1”,预设请求处理路径中包括的各个方法的调用顺序与实际请求处理路径中包括的各个方法的调用顺序不相同,确定对目标访问请求校验失败。
在另一种实现方式中,目标访问请求中携带第一数据,可以通过判断目标访问请求对应的预设请求处理路径与实际请求处理路径是否相同,以及判断第一实际返回数据方法所返回的第二数据与第一数据是否相同,对目标访问请求进行校验。若目标访问请求对应的预设请求处理路径与实际请求处理路径相同,且第二数据与第一数据相同,则生成对目标访问请求校验成功的校验结果。若目标访问请求对应的预设请求处理路径与实际请求处理路径不相同;或者,若第二数据与第一数据不相同;或者,若目标访问请求对应的预设请求处理路径与实际请求处理路径不相同以及第二数据与第一数据不相同,则生成对目标访问请求校验失败的校验结果。
在一种实现方式中,为了防止越权漏洞的产生,当对目标访问请求校验成功时,可以将目标访问请求、实际请求处理路径中的第一实际请求处理方法和第一数据进行关联存储;若再次接收到目标访问请求,则可以根据安全防护机制获取再次接收到的目标访问请求对应的第二实际请求处理方法和第二实际返回数据方法,以及获取第二实际返回数据方法所返回的第三数据;若第一实际请求处理方法与第二实际请求处理方法相同,且第一数据与第三数据匹配(例如可以是第一数据与第三数据相同),则生成对再次接收到的目标访问请求校验成功的校验结果;若第一实际请求处理方法与第二实际请求处理方法不相同;或者,若第一数据与第三数据不匹配;或者,若第一实际请求处理方法与第二实际请求处理方法不相同以及第一数据与第三数据不匹配,则生成对再次接收到的目标访问请求校验失败的校验结果。以用户查询请求为例,越权漏洞可以是指对于同一个用户发送两次相同的查询请求,返回的查询结果不一致的情况。通过这种方式可以有效避免越权漏洞的产生,进一步提升请求校验准确率,进一步提升对应用程序的防护准确率。
在一种实现方式中,若对第二次接收到的目标访问请求校验成功,可以采用第二次接收到的目标访问请求对应的第二实际请求处理方法和第三数据,对关联存储的第一实际请求处理方法和第一数据进行覆盖。另外,还可以设置缓存时间段(例如10秒),当在缓存时间段内(例如10秒以内)对多次接收到的目标访问请求均校验成功时,不对目标访问请求、第一实际请求处理方法和第一数据进行关联存储;当在缓存时间段之外(例如超过10秒)对多次接收到的目标访问请求均校验成功时,可以对目标访问请求、第一实际请求处理方法和第一数据进行关联存储。通过设定缓存时间段,在缓存时间段之外(例如超过10秒)对多次接收到的目标访问请求均校验成功时,才可以将目标访问请求、第一实际请求处理方法和第一数据进行关联存储至缓存空间中,可以合理分配缓存资源,节省缓存空间。进一步地,还可以设置缓存清理时间段,对应用程序的访问请求不止一种,接收到的同种类型的访问请求不止一个,数据量会比较大,占用的缓存空间较多,容易对应用程序的运行状态产生影响(例如运行过程卡顿,运行过程中断等情况),可以将缓存时间超过缓存清理时间段的数据从缓存中删除,对缓存空间进行有效管理,保持应用程序的正常运行状态。
在一种实现方式中,请求处理方法可以用于对目标访问请求进行辅助校验。举例来说,目标访问请求是非法用户对应用程序的用户登录请求,用户登录请求中携带用户的登录信息(包括用户名‘admin’or‘1’=‘1’--和密码‘任意字符’)。假设应用程序的开发者因疏忽未设置对用户名中的字符进行过滤的函数或方法,或直接对登录信息中的用户名和密码拼接后进行数据库查询;此时,由于根据非法用户的登录信息构造得到的查询语句“SELECT*FROM USERS where username=‘admin’or‘1’=‘1’--and password=‘任意字符’”永远为真值,使得该用户登录请求对应的实际请求处理路径与该用户登录请求对应的预设请求处理路径是相同的,返回数据方法所返回的登录信息与用户登录请求中的登录信息也是相同的,因此,若采用以上实现方式中的校验方法将导致校验失效。此时,可以采用请求处理方法对目标访问请求进行辅助校验,若通过请求处理方法检测到该用户登录请求中的用户名与正常输入的用户名不一致(例如,正常输入的用户名中不能包括非法字符“admin”),同样可以确定对该用户登录请求校验失败,进一步提升了请求校验结果的准确率,进一步提升了对应用程序的安全防护准确率。
步骤S204,根据校验结果确定对目标访问请求的响应策略。
当校验结果为对目标访问请求校验成功时,确定得到的对目标访问请求的响应策略可以为响应目标访问请求,例如,允许登录应用程序,返回目标访问请求所请求的数据等等。当校验结果为对目标访问请求校验失败时,确定得到的对目标访问请求的响应策略可以为拒绝响应目标访问请求,例如,不允许登录应用程序、禁止返回目标访问请求所请求的数据等等;还可以向发送该目标反问请求的终端输出告警页面,告警页面用于提示目标访问请求被阻止;还可以将目标访问请求、目标访问请求对应的实际请求处理路径写入日志,并通过向应用程序的开发者和应用程序的安全管理员发送告警信息,应用程序的开发者和应用程序的安全管理员可以通过查看日志或告警信息及时获知应用程序接收到的非法请求,以及非法请求对应的请求处理路径,从而可以对应用程序进行修复,提高应用程序的安全性和可靠性。
本申请实施例中,当接收到对应用程序的目标访问请求时,可以在数据表中确定目标访问请求对应的预设请求处理路径,还可以根据预先注入到应用程序的源代码中的安全防护机制监控对目标访问请求的实际请求处理路径,通过实际请求处理路径和目标访问请求对应的预设请求处理路径对目标访问请求进行校验,能够有效提升请求校验结果的准确率,从而有效提升对应用程序的防护准确率;另外,数据表中存储有应用程序的至少一种访问请求中每种访问请求对应的预设请求处理路径,当接收到对应用程序的目标访问请求时能够快速在数据表中确定出目标访问请求对应的预设请求处理路径,在一定程度上提升了请求校验效率,从而提升了对应用程序的防护效率。另外,请求处理方法可以用于对目标访问请求进行辅助校验;当对目标访问请求校验成功时,可以将目标访问请求、实际请求处理路径中的第一实际请求处理方法和第一数据进行关联存储,有效避免越权漏洞的产生,进一步提升了请求校验结果的准确率,使得应用程序的运行更加安全可靠。
请参见图3,图3是本申请实施例提供的另一种请求处理方法的流程示意图,该请求处理方法可以由图1所示的请求处理系统10中的服务器102执行,该请求处理方法可以包括以下步骤S301至步骤S307:
步骤S301,在应用程序的源代码中注入安全防护机制。
安全防护机制可以理解为是由一段可执行的安全防护代码组成的开发框架或框架系统,安全防护机制需要在应用程序的开发阶段注入到应用程序的源代码中的。安全防护机制可以包括请求起始标识符、至少一个请求方法标识符和请求结束标识符。请求起始标识符可以用于在应用程序的源代码中标识对访问请求的请求处理方法;请求方法标识符可以用于在应用程序的源代码中标识对访问请求的数据处理方法;请求结束结束标识符可以用于在应用程序的源代码中标识对访问请求的返回数据方法。
对于同一种类型的访问请求,对该访问请求的请求处理方法、对该访问请求的至少一个数据处理方法以及对该访问请求的返回数据方法共同组成对该访问请求的一条预设请求处理路径,即该访问请求对应的预设请求处理路径可以包括位于路径起点的请求处理方法、位于路径起点与路径终点之间的至少一个数据处理方法、位于路径终点的返回数据方法,以及至少一个数据处理方法之间的调用顺序。
在一种实现方式中,安全防护机制可以是在应用程序的开发阶段,由应用程序的开发者根据应用程序的开发逻辑手动注入至应用程序的源代码中的。在另一种实现方式中,安全防护机制还可以是在应用程序的开发阶段,根据应用程序的至少一种访问请求中每种访问请求对应的预设请求处理路径包括的各个方法之间的调用关系自动注入至应用程序的源代码中的。
在以上两种实现方式中,安全防护机制的注入过程可以为:在应用程序的源代码中请求处理方法对应的位置处添加请求起始标识符,在应用程序的源代码中按照至少一个数据处理方法之间的调用顺序,在至少一个数据处理方法中的每个数据处理方法对应的位置处添加一个请求方法标识符,在应用程序的源代码中返回数据方法对应的位置处添加请求结束标识符。举例来说,对于自动标注的情况,当在应用程序的源代码中确定出请求处理方法后,在应用程序的源代码中请求处理方法对应的位置处添加请求起始标识符;然后对在请求处理方法之后被调用的数据处理方法1进行自动跟踪,并在应用程序的源代码中数据处理方法1对应的位置处添加请求方法标识;以此类推,继续对在数据处理方法1之后被调用的数据处理方法2进行自动跟踪,直至跟踪到返回数据方法,然后在应用程序的源代码中返回数据方法对应的位置处添加请求结束标识符。
图4是本申请实施例提供的一种安全防护机制注入结果的示意图,如图4所示,虚线框中的“@Request_Start()”是请求起始标识符;虚线框中的“@Re quest_Path_1()”和“@Request_Path_2()”是两个请求方法标识符,“@Request_Path_1()”标识的数据处理方法的调用顺序在“@Request_Path_2()”标识的数据处理方法的调用顺序之前;“@Request_Data_Receive()”是请求结束标识符。“@Request_Start()”标识的请求处理方法,“@Request_Path_1()”和“@Requ est_Path_2()”标识的两个数据处理方法,以及“@Request_Data_Receive()”标识的返回数据方法共同组成一条预设请求处理路径。需要说明的是,图4所示实施例仅用于举例,并不构成对本申请实施例的限定,在实际应用场景中,请求起始标识符、请求方法标识符以及请求结束标识符还可以采用其他形式的标识表示,例如,还可以采用“@Request_Begin()”表示请求起始标识符、采用“@Request_Data_Return()”表示请求结束标识符,采用“@Request_Process()”表示请求方法标识符等等。
步骤S302,通过安全防护机制获取应用程序的至少一种访问请求中每种访问请求对应的预设请求处理路径。
在一种实现方式中,对于自动注入安全防护机制的方式,在应用程序的初始化阶段,可以通过安全防护机制获取应用程序的至少一种访问请求中每种访问请求对应的预设请求处理路径。在另一种实现方式中,对于由开发者手动注入安全防护机制的方式,在应用程序的初始化阶段不能获取到每种访问请求对应的预设请求处理路径,因为开发者手动注入的请求起始标识符、请求方法标识符以及请求结束标识符之间没有形成映射,即开发者将请求起始标识符、请求方法标识符以及请求结束标识符注入源代码的过程中没有考虑到各个方法之间的调用关系,或者对各个方法之间的调用关系标注不够明确;对于由开发者手动注入安全防护机制的方式,只有在对应用程序进行编译的阶段或在对应用程序进行解释运行的阶段,才可以通过安全防护机制获取应用程序的至少一种访问请求中每种访问请求对应的预设请求处理路径。至少一种访问请求可以是指应用程序可能接收到的所有类型的访问请求,还可以是指应用程序可能接收到的部分类型的访问请求;例如,至少一种访问请求可以包括用户登录请求,用户查询请求、用户更新请求等等。
步骤S303,将每种访问请求对应的预设请求处理路径以及位于路径起点的请求处理方法记录至预先建立的数据表中。
通过安全防护机制获取到应用程序的至少一种访问请求中每种访问请求对应的预设请求处理路径之后,可以将每种访问请求对应的预设请求处理路径以及位于路径起点的请求处理方法记录至预先建立的数据表中;在数据表中每种访问请求对应的预设请求处理路径,与该访问请求对应的预设请求处理路径的请求处理方法对应。在一种实现方式中,对于自动注入安全防护机制的方式,在应用程序的初始化阶段可以通过安全防护机制获取应用程序的至少一种访问请求中每种访问请求对应的预设请求处理路径,因而可以在应用程序的初始化阶段得到包含每种访问请求对应的预设请求处理路径的数据表。在另一种实现方式中,对于手动注入安全防护机制的方式,在对应用程序进行编译的阶段或在对应用程序进行解释运行的阶段可以通过安全防护机制获取应用程序的至少一种访问请求中每种访问请求对应的预设请求处理路径,因而可以在对应用程序进行编译的阶段或在对应用程序进行解释运行的阶段得到包含每种访问请求对应的预设请求处理路径的数据表。
表1示出了一个示例性的数据表,如表1所示,应用程序可能接收到5种类型的访问请求,每种访问请求对应一条预设请求处理路径;表1中包含3个字段,分别是ID字段、请求处理方法字段和预设请求处理路径字段;ID字段是数据库的自有字段,ID字段随着访问请求的种类的增加而增加,请求处理方法字段用于记录每种访问请求对应的请求处理方法;预设请求处理路径字段用于记录每种访问请求对应的预设请求处理路径;不同类型的访问请求对应的预设请求处理路径不同,因而数据表中不可能存在相同的条目。需要说明的是,表1所示的数据表仅用于示例,并不构成对本申请实施例的限定。
表1
在应用程序的实际运行过程中,可以接收到对应用程序的同一种类型的多个不同的目标访问请求,例如接收到的多个用户对应用程序的用户登录请求;对于多个不同的目标访问请求,由于多个不同的目标访问请求属于同一类型,因此多个不同的目标访问请求对应的请求处理路径(例如预设请求处理路径或实际请求处理路径)可以是相同,但是对于不同的目标访问请求,返回数据方法所返回的返回数据是不相同的。如图5所示,图5是本申请实施例提供的一种目标访问请求与数据处理路径的对应关系示意图,用户1发送的对应用程序的目标访问请求1、用户2发送的对应用程序的目标访问请求2,以及用户3发送的对应用程序的目标访问请求3属于同一类型的访问请求,对应的数据处理路径相同,但相同的返回数据方法所返回的数据是不相同的,目标访问请求1对应返回数据1,目标访问请求2对应返回数据2,目标访问请求3对应返回数据3。
步骤S304,当接收到对应用程序的目标访问请求时,在数据表中确定目标访问请求对应的预设请求处理路径。
步骤S305,根据安全防护机制获取对目标访问请求的实际请求处理路径。
步骤S306,根据实际请求处理路径和目标访问请求对应的预设请求处理路径,对目标访问请求进行校验,得到校验结果。
步骤S307,根据校验结果确定对目标访问请求的响应策略。
本申请实施例中步骤S304的执行过程与图2所示实施例中步骤S201的执行过程相同,步骤S305的执行过程与图2所示实施例中步骤S202的执行过程相同,步骤S306的执行过程与图2所示实施例中步骤S203的执行过程相同,步骤S307的执行过程与图2所示实施例中步骤S204的执行过程相同,具体执行过程可参见图2所示实施例的描述,在此不再赘述。
本申请实施例中,安全防护机制可以是在应用程序的开发阶段,根据源代码中的各个方法之间的调用关系自动注入应用程序的源代码中的,自动注入安全防护机制的方式使得注入方式更加智能。通过安全防护机制可以获取到应用程序可能接收到的至少一种访问请求中每种访问请求对应的预设请求处理路径,每种访问请求对应的预设请求处理路径被记录至预先建立的数据表中,在数据表中可以快速查询到每种访问请求对应的预设请求处理路径,从而在一定程度上提升请求校验效率,进而提升对应用程序的防护效率。
请参见图6,图6是本申请实施例提供的一种请求处理装置的结构示意图,该请求处理装置60可以用于执行图2或图3所示的请求处理方法中的相应步骤,该请求处理装置60可以包括如下单元:
确定单元601,用于当接收到对应用程序的目标访问请求时,在数据表中确定目标访问请求对应的预设请求处理路径,数据表包括应用程序的至少一种访问请求中每种访问请求对应的预设请求处理路径;
获取单元602,用于根据安全防护机制获取对目标访问请求的实际请求处理路径,安全防护机制是预先注入到应用程序的源代码中的;
校验单元603,用于根据实际请求处理路径和目标访问请求对应的预设请求处理路径,对目标访问请求进行校验,得到校验结果;
确定单元601,还用于根据校验结果确定对目标访问请求的响应策略。
在一种实现方式中,确定单元601,还用于:
在应用程序的源代码中注入安全防护机制;
通过安全防护机制获取应用程序的至少一种访问请求中每种访问请求对应的预设请求处理路径;
将每种访问请求对应的预设请求处理路径以及位于路径起点的请求处理方法记录至预先建立的数据表中。
在一种实现方式中,安全防护机制包括请求起始标识符、至少一个请求方法标识符和请求结束标识符;预设请求处理路径包括位于路径起点的请求处理方法、至少一个数据处理方法、位于路径终点的返回数据方法以及至少一个数据处理方法之间的调用顺序。
在一种实现方式中,确定单元601,具体用于:
在应用程序的源代码中请求处理方法对应的位置处添加请求起始标识;
在应用程序的源代码中按照调用顺序,在至少一个数据处理方法中的每个数据处理方法对应的位置处添加一个请求方法标识符;
在应用程序的源代码中返回数据方法对应的位置处添加请求结束标识符。
在一种实现方式中,校验单元603,具体用于:
判断目标访问请求对应的预设请求处理路径是否与实际请求处理路径相同;
若相同,则生成对目标访问请求校验成功的校验结果;
若不相同,则生成对目标访问请求校验失败的校验结果;
其中,预设请求处理路径与实际请求处理路径相同是指:预设请求处理路径中包括的各个方法与实际请求处理路径中包括的各个方法相同,且预设请求处理路径中包括的各个方法的调用顺序与实际请求处理路径中包括的各个方法的调用顺序相同。
在一种实现方式中,实际请求处理路径中包括第一实际返回数据方法;目标访问请求中携带第一数据;校验单元603,具体用于:
获取第一实际返回数据方法所返回的第二数据;
判断目标访问请求对应的预设请求处理路径与实际请求处理路径相同,且第一数据与第二数据匹配是否都满足;
若是,则生成对目标访问请求校验成功的校验结果;
若否,则生成对目标访问请求校验失败的校验结果;
其中,预设请求处理路径与实际请求处理路径相同是指:预设请求处理路径中包括的各个方法与实际请求处理路径中包括的各个方法相同,且预设请求处理路径中包括的各个方法的调用顺序与实际请求处理路径中包括的各个方法的调用顺序相同。
在一种实现方式中,实际请求处理路径中还包括第一实际请求处理方法;校验单元603,还用于:
若校验结果为对目标访问请求校验成功,则将目标访问请求、第一实际请求处理方法和第一数据进行关联存储;
若再次接收到目标访问请求,则根据安全防护机制获取再次接收到的目标访问请求对应的第二实际请求处理方法和第二实际返回数据方法,以及获取第二实际返回数据方法所返回的第三数据;
若第一实际请求处理方法与第二实际请求处理方法相同,且第一数据与第三数据匹配,则生成对再次接收到的目标访问请求校验成功的校验结果。
在一种实现方式中,确定单元601,具体用于:
若校验结果为对目标访问请求校验失败,则拒绝响应目标访问请求,并输出告警页面,以及将目标访问请求、目标访问请求对应的实际请求处理路径写入日志,告警页面用于提示目标访问请求被阻止。
根据本申请的一个实施例,图6所示的请求处理装置60中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本申请的其它实施例中,该请求处理装置60也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。根据本申请的另一个实施例,可以通过在包括例如中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的通用计算机的通用计算设备上运行能够执行如图2或图3中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图6中所示的请求处理装置60,以及来实现本申请实施例的请求处理方法。计算机程序可以记载于例如计算机可读存储介质上,并通过计算机可读存储介质装载于图1所示请求处理系统的服务器102中,并在其中运行。
本申请实施例中,当接收到对应用程序的目标访问请求时,可以在数据表中确定目标访问请求对应的预设请求处理路径,还可以根据预先注入到应用程序的源代码中的安全防护机制监控对目标访问请求的实际请求处理路径,通过实际请求处理路径和目标访问请求对应的预设请求处理路径对目标访问请求进行校验,能够有效提升请求校验结果的准确率,从而有效提升对应用程序的防护准确率;另外,数据表中存储有应用程序的至少一种访问请求中每种访问请求对应的预设请求处理路径,当接收到对应用程序的目标访问请求时能够快速在数据表中确定出目标访问请求对应的预设请求处理路径,在一定程度上提升了请求校验效率,从而提升了对应用程序的防护效率。
请参见图7,图7是本申请实施例提供的一种请求处理设备的结构示意图,该请求处理设备包括处理器701、存储器702和通信接口703,处理器701、存储器702和通信接口703通过一条或多条通信总线连接。
处理器701用于执行图2或图3所示的请求处理方法中的相应步骤。该处理器701可以是中央处理器(Central Processing Unit,CPU),网络处理器(Network Processor,NP),硬件芯片或者其任意组合。
存储器702用于存储计算机程序等。存储器702可以包括易失性存储器(volatilememory),例如随机存取存储器(Random Access Memory,RAM);存储器702也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如只读存储器(Read-Only Memory,ROM),快闪存储器(flash memory),硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);存储器702还可以包括上述种类的存储器的组合。
通信接口703用于接收和发送数据,例如,通信接口703用于接收对应用程序的目标访问请求,通信接口703用于输出告警页面等等。在本申请实施例中,该请求处理设备可以包括多个通信接口,其中,用于发送数据的通信接口和用于接收数据的通信接口可以不为同一个通信接口。
处理器701调用存储器702中存储的计算机程序执行以下步骤:
当接收到对应用程序的目标访问请求时,在数据表中确定目标访问请求对应的预设请求处理路径,数据表包括应用程序的至少一种访问请求中每种访问请求对应的预设请求处理路径;
根据安全防护机制获取对目标访问请求的实际请求处理路径,安全防护机制是预先注入到应用程序的源代码中的;
根据实际请求处理路径和目标访问请求对应的预设请求处理路径,对目标访问请求进行校验,得到校验结果;
根据校验结果确定对目标访问请求的响应策略。
在一种实现方式中,处理器701调用存储器702中存储的计算机程序还执行以下步骤:
在应用程序的源代码中注入安全防护机制;
通过安全防护机制获取应用程序的至少一种访问请求中每种访问请求对应的预设请求处理路径;
将每种访问请求对应的预设请求处理路径以及位于路径起点的请求处理方法记录至预先建立的数据表中。
在一种实现方式中,安全防护机制包括请求起始标识符、至少一个请求方法标识符和请求结束标识符;预设请求处理路径包括位于路径起点的请求处理方法、至少一个数据处理方法、位于路径终点的返回数据方法以及至少一个数据处理方法之间的调用顺序。
在一种实现方式中,处理器701调用存储器702中存储的计算机程序具体执行以下步骤:
在应用程序的源代码中请求处理方法对应的位置处添加请求起始标识;
在应用程序的源代码中按照调用顺序,在至少一个数据处理方法中的每个数据处理方法对应的位置处添加一个请求方法标识符;
在应用程序的源代码中返回数据方法对应的位置处添加请求结束标识符。
在一种实现方式中,处理器701调用存储器702中存储的计算机程序具体执行以下步骤:
判断目标访问请求对应的预设请求处理路径是否与实际请求处理路径相同;
若相同,则生成对目标访问请求校验成功的校验结果;
若不相同,则生成对目标访问请求校验失败的校验结果;
其中,预设请求处理路径与实际请求处理路径相同是指:预设请求处理路径中包括的各个方法与实际请求处理路径中包括的各个方法相同,且预设请求处理路径中包括的各个方法的调用顺序与实际请求处理路径中包括的各个方法的调用顺序相同。
在一种实现方式中,实际请求处理路径中包括第一实际返回数据方法;目标访问请求中携带第一数据;处理器701调用存储器702中存储的计算机程序具体执行以下步骤:
获取第一实际返回数据方法所返回的第二数据;
判断目标访问请求对应的预设请求处理路径与实际请求处理路径相同,且第一数据与第二数据匹配是否都满足;
若是,则生成对目标访问请求校验成功的校验结果;
若否,则生成对目标访问请求校验失败的校验结果;
其中,预设请求处理路径与实际请求处理路径相同是指:预设请求处理路径中包括的各个方法与实际请求处理路径中包括的各个方法相同,且预设请求处理路径中包括的各个方法的调用顺序与实际请求处理路径中包括的各个方法的调用顺序相同。
在一种实现方式中,实际请求处理路径中还包括第一实际请求处理方法;处理器701调用存储器702中存储的计算机程序还执行以下步骤:
若校验结果为对目标访问请求校验成功,则将目标访问请求、第一实际请求处理方法和第一数据进行关联存储;
若再次接收到目标访问请求,则根据安全防护机制获取再次接收到的目标访问请求对应的第二实际请求处理方法和第二实际返回数据方法,以及获取第二实际返回数据方法所返回的第三数据;
若第一实际请求处理方法与第二实际请求处理方法相同,且第一数据与第三数据匹配,则生成对再次接收到的目标访问请求校验成功的校验结果。
在一种实现方式中,处理器701调用存储器702中存储的计算机程序具体执行以下步骤:
若校验结果为对目标访问请求校验失败,则拒绝响应目标访问请求,并输出告警页面,以及将目标访问请求、目标访问请求对应的实际请求处理路径写入日志,告警页面用于提示目标访问请求被阻止。
本申请实施例中,当接收到对应用程序的目标访问请求时,可以在数据表中确定目标访问请求对应的预设请求处理路径,还可以根据预先注入到应用程序的源代码中的安全防护机制监控对目标访问请求的实际请求处理路径,通过实际请求处理路径和目标访问请求对应的预设请求处理路径对目标访问请求进行校验,能够有效提升请求校验结果的准确率,从而有效提升对应用程序的防护准确率;另外,数据表中存储有应用程序的至少一种访问请求中每种访问请求对应的预设请求处理路径,当接收到对应用程序的目标访问请求时能够快速在数据表中确定出目标访问请求对应的预设请求处理路径,在一定程度上提升了请求校验效率,从而提升了对应用程序的防护效率。
本申请实施例还提供一种计算机可读存储介质,可以用于存储计算机程序,该计算机程序被计算机设备的处理器调用时,使得计算机设备可以执行上述图2或图3实施例中请求处理方法的相应步骤。计算机可读存储介质包括但不限于快闪存储器(flashmemory),硬盘(Hard Disk Drive,HDD),固态硬盘(Solid-State Drive,SSD)。
本申请实施例中还提供一种计算机程序产品,该计算机程序产品被计算机设备运行时,可以执行上述图2或图3实施例中请求处理方法的相应步骤。
本领域普通技术人员可以意识到,结合本申请中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法以实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(Digital Subscriber Line,DSL)等)或无线(例如红外、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)或者半导体介质(例如,固态硬盘(Solid StateDisk,SSD))等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
- 一种请求处理方法、请求处理装置及计算机可读存储介质
- 一种服务请求处理方法、装置及计算机可读存储介质