CN116933269A - 请求转发方法及装置、存储介质、计算机设备 - Google Patents

请求转发方法及装置、存储介质、计算机设备 Download PDF

Info

Publication number
CN116933269A
CN116933269A CN202310913439.2A CN202310913439A CN116933269A CN 116933269 A CN116933269 A CN 116933269A CN 202310913439 A CN202310913439 A CN 202310913439A CN 116933269 A CN116933269 A CN 116933269A
Authority
CN
China
Prior art keywords
scanning
task
code security
request
time
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310913439.2A
Other languages
English (en)
Inventor
杨海毛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An International Financial Leasing Co Ltd
Original Assignee
Ping An International Financial Leasing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ping An International Financial Leasing Co Ltd filed Critical Ping An International Financial Leasing Co Ltd
Priority to CN202310913439.2A priority Critical patent/CN116933269A/zh
Publication of CN116933269A publication Critical patent/CN116933269A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种请求转发方法及装置、存储介质、计算机设备,涉及信息处理技术领域、软件开发领域,主要目的在于解决代码安全扫描端的扫描效率较低的问题。主要包括响应于代码安全扫描请求指令,根据所述代码安全扫描请求指令生成代码安全扫描任务,并将所述代码安全扫描任务添加至扫描延迟队列;若所述代码安全扫描任务的排队时间满足扫描延迟时间,则将所述代码安全扫描任务转移至死信队列,所述扫描延迟时间是根据扫描端的在执行任务数据确定的;将所述死信队列中的所述代码安全扫描任务转发至扫描端,以使所述扫描端对所述代码安全扫描任务携带的待扫描文件进行扫描。主要用于转发代码安全扫描请求。

Description

请求转发方法及装置、存储介质、计算机设备
技术领域
本发明涉及一种信息处理技术领域、软件开发领域,特别是涉及一种请求转发方法及装置、存储介质、计算机设备。
背景技术
代码安全扫描是指通过特定的规则对代码进行安全漏洞检测,发现代码中存在的安全漏洞,并提供修改建议,从而避免在后续的功能测试中发现安全漏洞时再进行修改所带来的各种风险。日常的代码开发过程中,代码扫描主要是通过调用提供代码安全扫描服务的扫描端进行代码扫描,用户只需要在前端提交代码安全扫描的请求、待扫描的代码,代码安全扫描的请求即会转化为扫描端的任务,被扫描端执行。
现有的代码安全扫描请求一旦产生,将立即被转发给扫描端。由于代码安全扫描比较耗费计算和存储资源,而且扫描一般耗时较长(平均2小时)的任务,当扫描端积压任务过多时,便会出现资源不足,各扫描任务之间互相竞争资源,情况严重时会导致扫描端宕机,导致扫描的效率较低。
发明内容
有鉴于此,本发明提供一种请求转发方法及装置、存储介质、计算机设备,主要目的在于现有代码安全扫描端的扫描效率较低的问题。
依据本发明一个方面,提供了一种请求转发方法,包括:
响应于代码安全扫描请求指令,根据所述代码安全扫描请求指令生成代码安全扫描任务,并将所述代码安全扫描任务添加至扫描延迟队列;
若所述代码安全扫描任务的排队时间满足扫描延迟时间,则将所述代码安全扫描任务转移至死信队列,所述扫描延迟时间是根据扫描端的在执行任务数据确定的;
将所述死信队列中的所述代码安全扫描任务转发至扫描端,以使所述扫描端对所述代码安全扫描任务携带的待扫描文件进行扫描。
进一步地,所述响应于代码安全扫描请求指令,根据所述代码安全扫描请求指令生成代码安全扫描任务包括:
响应于代码安全扫描请求指令,根据所述代码安全扫描请求指令所携带的待扫描文件信息、用户属性信息从缓冲空间中获取校验信息,所述校验信息包括与所述待扫描文件信息、所述用户属性信息相匹配的在先扫描请求的缓存扫描文件信息、请求发起时长;
若所述校验信息为非空,则基于所述校验信息、所述待扫描文件信息进行重复请求校验;
若所述重复请求校验的结果为通过校验,或所述校验信息、所述待扫描文件信息为空,则根据所述待扫描文件信息生成代码安全扫描任务。
进一步地,所述若所述校验信息为非空,则基于所述校验信息、所述待扫描文件信息进行重复请求校验包括:
若所述请求发起时长小于或等于预设时间间隔,则将所述重复请求校验的结果确定为未通过校验;
若所述请求发起时长大于所述预设时间间隔,则将缓存扫描文件信息与所述待扫描文件信息进行比对,若比对结果为相同,则将所述重复请求校验的结果确定为未通过校验,若所述比对结果为不同,则将所述重复请求校验的结果确定为通过校验。
进一步地,所述比对结果为不同,所述若所述重复请求校验的结果为通过校验,或所述校验信息、所述待扫描文件信息为空,则根据所述待扫描文件信息生成代码安全扫描任务之后,所述方法还包括:
获取所述缓存扫描文件信息所对应的关联代码安全扫描任务的转发状态信息;
若所述转发状态信息为未转发,则将所述缓存扫描文件信息所对应的代码安全扫描任务从所述扫描延迟队列中删除。
进一步地,所述在执行任务数据包括在执行任务数量、在执行任务状态,所述若所述代码安全扫描任务的排队时间满足扫描延迟时间,则将所述代码安全扫描任务转移至死信队列之前,所述方法还包括:
获取所述扫描端的在执行任务数量、在执行任务状态;
若所述在执行任务状态为正常,且所述在执行任务数量小于第一预设数量阈值,则将第一预设时间确定为扫描延迟时间;
若所述在执行任务状态为正常,且所述在执行任务数量大于或等于所述第一预设数量阈值,小于第二预设数量阈值,则将所述第二预设时间确定为扫描延迟时间;
若所述在执行任务状态为正常,且所述在执行任务数量大于或等于所述第二预设数量阈值,则根据所述在执行任务数量、所述第二预设数量阈值、所述第二预设时间计算得到扫描延迟时间。
进一步地,所述方法还包括:
若所述在执行任务状态为异常,则将所述第三预设时间确定为扫描延迟时间;
监听所述扫描端的在执行任务状态的更新,若所述在执行任务状态更新为正常,则重新获取所述扫描端的更新在执行任务数量,并基于所述更新在执行任务数量对所述扫描延迟时间进行更新。
进一步地,所述将所述代码安全扫描任务添加至扫描延迟队列之后,所述方法还包括:
获取所述扫描端的预期扫描执行时间、扫描延迟时间;
根据所述预期扫描执行时间、所述扫描延迟时间计算得到预期扫描完成时间;
将所述扫描延迟时间、所述预期扫描完成时间发送至请求发起终端。
依据本发明另一个方面,提供了一种请求转发装置,包括:
生成模块,用于响应于代码安全扫描请求指令,根据所述代码安全扫描请求指令生成代码安全扫描任务,并将所述代码安全扫描任务添加至扫描延迟队列;
延迟模块,用于若所述代码安全扫描任务的排队时间满足扫描延迟时间,则将所述代码安全扫描任务转移至死信队列,所述扫描延迟时间是根据扫描端的在执行任务数据确定的;
转发模块,用于将所述死信队列中的所述代码安全扫描任务转发至扫描端,以使所述扫描端对所述代码安全扫描任务携带的待扫描文件进行扫描。
进一步地,所述获取模块包括:
获取单元,用于响应于代码安全扫描请求指令,根据所述代码安全扫描请求指令所携带的待扫描文件信息、用户属性信息从缓冲空间中获取校验信息,所述校验信息包括与所述待扫描文件信息、所述用户属性信息相匹配的在先扫描请求的缓存扫描文件信息、请求发起时长;
第一校验单元,用于若所述校验信息为非空,则基于所述校验信息、所述待扫描文件信息进行重复请求校验;
第二校验单元,用于若所述重复请求校验的结果为通过校验,或所述校验信息、所述待扫描文件信息为空,则根据所述待扫描文件信息生成代码安全扫描任务。
进一步地,在具体应用场景中,所述第一校验单元具体用于若所述请求发起时长小于或等于预设时间间隔,则将所述重复请求校验的结果确定为未通过校验;
若所述请求发起时长大于所述预设时间间隔,则将缓存扫描文件信息与所述待扫描文件信息进行比对,若比对结果为相同,则将所述重复请求校验的结果确定为未通过校验,若所述比对结果为不同,则将所述重复请求校验的结果确定为通过校验。
进一步地,所述装置还包括:
第一获取模块,用于获取所述缓存扫描文件信息所对应的关联代码安全扫描任务的转发状态信息;
删除模块,用于若所述转发状态信息为未转发,则将所述缓存扫描文件信息所对应的代码安全扫描任务从所述扫描延迟队列中删除。
进一步地,所述装置还包括:
第二获取模块,用于获取所述扫描端的在执行任务数量、在执行任务状态;
第一确定模块,用于若所述在执行任务状态为正常,且所述在执行任务数量小于第一预设数量阈值,则将第一预设时间确定为扫描延迟时间;
第二确定模块,用于若所述在执行任务状态为正常,且所述在执行任务数量大于或等于所述第一预设数量阈值,小于第二预设数量阈值,则将所述第二预设时间确定为扫描延迟时间;
第三确定模块,用于若所述在执行任务状态为正常,且所述在执行任务数量大于或等于所述第二预设数量阈值,则根据所述在执行任务数量、所述第二预设数量阈值、所述第二预设时间计算得到扫描延迟时间。
进一步地,所述装置还包括:
第四确定模块,用于若所述在执行任务状态为异常,则将所述第三预设时间确定为扫描延迟时间;
监听模块,用于监听所述扫描端的在执行任务状态的更新,若所述在执行任务状态更新为正常,则重新获取所述扫描端的更新在执行任务数量,并基于所述更新在执行任务数量对所述扫描延迟时间进行更新。
进一步地,所述装置还包括:
第三获取模块,用于获取所述扫描端的预期扫描执行时间、扫描延迟时间;
计算模块,用于根据所述预期扫描执行时间、所述扫描延迟时间计算得到预期扫描完成时间;
发送模块,用于将所述扫描延迟时间、所述预期扫描完成时间发送至请求发起终端。
根据本发明的又一方面,提供了一种存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如上述请求转发方法对应的操作。
根据本发明的再一方面,提供了一种计算机设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述请求转发方法对应的操作。
借由上述技术方案,本发明实施例提供的技术方案至少具有下列优点:
本发明提供了一种请求转发方法及装置、存储介质、计算机设备,首先响应于代码安全扫描请求指令,根据所述代码安全扫描请求指令生成代码安全扫描任务,并将所述代码安全扫描任务添加至扫描延迟队列;若所述代码安全扫描任务的排队时间满足扫描延迟时间,则将所述代码安全扫描任务转移至死信队列,所述扫描延迟时间是根据扫描端的在执行任务数据确定的;将所述死信队列中的所述代码安全扫描任务转发至扫描端,以使所述扫描端对所述代码安全扫描任务携带的待扫描文件进行扫描。与现有技术相比,本发明实施例通过将代码安全扫描任务添加至扫描延迟队列,并基于扫描端的在执行任务数据确定扫描延迟时间,实现延迟过程与扫描端在执行任务流量的联动,避免扫描端任务过多,出现宕机情况,从而有效提升代码安全扫描效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的一种请求转发方法流程图;
图2示出了本发明实施例提供的另一种请求转发方法流程图;
图3示出了本发明实施例提供的一种请求转发装置组成框图;
图4示出了本发明实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
针对现有的代码安全扫描请求一旦产生,将立即被转发给扫描端。由于代码安全扫描比较耗费计算和存储资源,而且扫描一般耗时较长(平均2小时)的任务,当扫描端积压任务过多时,便会出现资源不足,各扫描任务之间互相竞争资源,情况严重时会导致扫描端宕机,导致扫描的效率较低。本发明实施例提供了一种请求转发方法,如图1所示,该方法包括:
101、响应于代码安全扫描请求指令,根据所述代码安全扫描请求指令生成代码安全扫描任务,并将所述代码安全扫描任务添加至扫描延迟队列。
本发明实施例中,当前执行主体为代码安全扫描系统的后端服务器,当用户基于前端网络页面上传待扫描的代码文件,并提出代码安全扫描请求时,当前执行主体会接收到代码安全扫描请求指令。其中,代码安全扫描请求指令携带有请求发出的用户信息,如用户账号、用户ID,终端设备信息,如设备IP地址,以及需要扫描的代码文件或用于获取代码文件的路径信息等,本发明实施例不做具体限定。当前执行主体在接收到代码安全扫描请求指令之后,需要调用执行代码扫描的扫描端接口以使扫描端对待扫描文件进行扫描,为了避免扫描端任务堆积,在基于代码安全扫描请求指令代码安全扫描任务之后,不是直接将任务转发至扫描端,而是将任务先写入基于消息队列(MQ:Message Queue)中间件构建的延迟队列中,以控制任务转发至扫描端的时机。其中,消息队列根据具体应用场景选择,可以为RabbitMQ、RocketMQ、ActiveMQ、Kafka等,本发明实施例不做具体限定。
102、若所述代码安全扫描任务的排队时间满足扫描延迟时间,则将所述代码安全扫描任务转移至死信队列。
本发明实施例中,当代码安全扫描任务写入延迟队列后,系统会按照预设消费时间间隔对队列中的任务进行消费,消费的过程为判断当前任务进入队列的时间是否满足延迟时间。例如,预设消费时间间隔为5分钟,则每隔五分钟对队列中的任务进行一次扫描延迟时间判断,若任务写入队列的时间小于扫描延迟时间,则重新将任务放回延迟队列中,若任务写入队列的时间大于或等于扫描延迟时间,则将任务从延迟队列中删除,写入死信队列。
需要说明的是,扫描延迟时间是根据扫描端的在执行任务数据确定的,即扫描延迟时间是根据扫描端的在执行任务的情况而动态调整的值。其中,在执行任务数据为扫描端执行扫描任务的实时数据,可以为当前在执行任务的数量,还可以为当前在执行任务的预计完成时间、当前在执行任务的状态等,本发明实施例不做具体限定。例如,在执行任务数据为在执行任务数量,当在执行任务数量小于15个时,扫描延迟时间配置为1小时,当在执行任务数量大于25个时,扫描延迟时间配置为2小时。又例如,在执行任务数据为当前在执行任务的预计完成时间,若当前在执行任务的预计完成时间为1.2小时,则将扫描延迟时间配置为1小时,若当前在执行任务的预计完成时间为2.5小时,则将扫描延迟时间配置为2.5小时。其中,扫描延迟时间与当前在执行任务的预计完成时间的大小关系,可以根据具体需求自定义,本发明实施例不做具体限定。通过基于在执行扫描任务数据对扫描延迟时间进行动态调节,扫描任务多时,加长延迟时间,扫描任务少时,缩短延迟时间,能够使延迟时间与当前扫描端任务执行状态相匹配,灵活、有效的缓解扫描端的流量峰值,避免扫描端由于突然的流量峰值而发生宕机,从而有效保证扫描成功率及扫描效率。
103、将所述死信队列中的所述代码安全扫描任务转发至扫描端,以使所述扫描端对所述代码安全扫描任务携带的待扫描文件进行扫描。
本发明实施例中,死信队列即为立即执行队列,当代码安全扫描任务进入死信队列,任务会立即被消费,即立即被转发至扫描端,若消费出现异常,则会进行消费重试,直至任务消费成功,即死信队列中的代码安全扫描任务一定会被拉起,并转发至扫描端被执行。其中,扫描端为对待扫描的代码文件进行安全扫描的执行端,可以为配置有代码安全扫描规则的软件开发安全生命周期代码(SSDLC:Secure Software Development Lifecycle)扫描平台,该平台可以依托于本地服务器、云端服务器或终端设备,本发明实施例不做具体限定。待扫描文件可以为任一应用程序的代码文件,代码文件可以为前端代码文件和/或后端代码文件。将代码安全扫描任务加入死信队列,在对代码安全扫描请求进行延迟的基础上,确保需要转发的请求都能够成功转发至扫描,从而保证请求转发的成功率。
在一个本发明实施例中,为了进一步说明及限定,如图2所示,步骤所述响应于代码安全扫描请求指令,根据所述代码安全扫描请求指令生成代码安全扫描任务包括:
201、响应于代码安全扫描请求指令,根据所述代码安全扫描请求指令所携带的待扫描文件信息、用户属性信息从缓冲空间中获取校验信息。
202、若所述校验信息为非空,则基于所述校验信息、所述待扫描文件信息进行重复请求校验。
203、若所述重复请求校验的结果为通过校验,或所述校验信息、所述待扫描文件信息为空,则根据所述待扫描文件信息生成代码安全扫描任务。
本发明实施例中,为了避免将重复的无效代码安全扫描请求转发至扫描端,在生成扫描任务并将扫描任务加入扫描延迟队列之前,对代码安全扫描请求进行校验。当前执行主体配置有缓存空间,此缓存空间用于存储当前时间之前接收到的代码安全扫描请求,当接收到新的代码安全扫描请求时,根据该代码安全扫描请求的待扫描文件信息、用户属性信息从缓存空间中提取出与待扫描文件信息、用户属性信息相匹配的在前代码安全扫描请求的信息作为校验信息。例如,用户账号为123,待扫描文件名为ABC,则从缓存空间中获取用户账号为123、待扫描文件名ABC或ABC-v1的文件作为校验信息。其中,缓存空间为日志型、键值对形成存储的数据库,例如,Redis。缓存内容可以随系统的重启情况,也可以按照预设时间清空,例如,8小时清空一次,本发明实施例不做具体限定。待扫描文件信息可以为应用程序名称、文件名称、文件内容等信息,用户属性信息可以为用户登录ID、网络IP等信息,本发明实施例不对缓存空间的数据库类型、及待扫描文件信息、用户属性信息的内容做具体限定。获取校验信息之后,若校验信息为空,则表明在前没有发起过此待扫描文件的扫描请求,可以直接生成代码扫描任务,若校验信息为非空,则表明在前已经发起过此待扫描文件的扫描请求校验信息,则需要基于校验信息对代码安全扫描请求进行校验。其中,校验信息包括与所述待扫描文件信息、所述用户属性信息相匹配的在先扫描请求的缓存扫描文件信息、请求发起时长。
在一个本发明实施例中,为了进一步说明及限定,步骤所述若所述校验信息为非空,则基于所述校验信息、所述待扫描文件信息进行重复请求校验包括:
若所述请求发起时长小于或等于预设时间间隔,则将所述重复请求校验的结果确定为未通过校验;
若所述请求发起时长大于所述预设时间间隔,则将缓存扫描文件信息与所述待扫描文件信息进行比对,若比对结果为相同,则将所述重复请求校验的结果确定为未通过校验,若所述比对结果为不同,则将所述重复请求校验的结果确定为通过校验。
本发明实施例中,预设时间间隔可以设为1秒、1分钟等较短的时间,具体数值可以根据用户应用场景自定义,本发明实施例不做具体限定。若请求发起时长小于或等于预设时间间隔,表明相同代码安全扫描请求在较短的时间内再次发起,例如,1秒内发起多次,考虑存在用户频繁操作、或网页响应异常等状况,则当前代码安全扫描请求作为无效请求,校验结果为未通过校验。若请求发起时长大于预设时间间隔,可能存在用户重复操作,也可能存在用户对代码文件进行更新重传的情况,则将缓存扫描文件信息与待扫描文件信息进行比对,具体为比对待扫码文件的文件名、文件内容。若比对结果为相同,则表明用户重复操作,当前代码安全扫描请求为无效请求,校验结果为未通过校验,若比对结果为不同,则表明当前代码安全扫描请求为代码文件更新重传的请求,校验结果为通过校验。通过对代码安全扫描请求进行前置过滤,能够对前端页面中操作抖动的情况进行有效过滤,过滤掉大量无效的代码安全扫描请求,实际应用中代码安全扫描请求量减少70%,大大减少扫描资源的无效占用,从而有效提高代码安全扫描效率。
在一个本发明实施例中,为了进一步说明及限定,步骤所述若所述重复请求校验的结果为通过校验,或所述校验信息、所述待扫描文件信息为空,则根据所述待扫描文件信息生成代码安全扫描任务之后,所述方法还包括:
获取所述缓存扫描文件信息所对应的关联代码安全扫描任务的转发状态信息;
若所述转发状态信息为未转发,则将所述缓存扫描文件信息所对应的代码安全扫描任务从所述扫描延迟队列中删除。
本发明实施例中,当比对结果为不同时,表明用户对待扫描文件的代码内容进行了更新,则在前提交的代码安全扫描请求文件,即与当前待扫描文件进行比对的缓存扫描文件,已经为无效文件,无需再对其执行扫描任务,可以将缓存扫描文件信息所对应的在前代码安全扫描任务(关联代码安全扫描任务)从扫描延迟队列中删除。为了在前代码安全扫描任务删除需要获取转发状态信息,以确定次任务是否已经转发,若已经转发,表明扫描端已经在执行,或已经执行完成,则不进行干预,若未转发,表明在前代码安全扫描任务还在扫描延迟队列中,则从扫描延迟队列中予以删除。在代码的开发中常常存在对代码进行修改调整的情况,而往往以最终修改版本为安全扫描的对象,因此,当待扫描文件出现更新上传的请求,对在前版本文件的扫描任务取消,能够进一步精细化的过滤掉无效请求,从而有效提高代码安全扫描效率。
在一个本发明实施例中,为了进一步说明及限定,步骤所述若所述代码安全扫描任务的排队时间满足扫描延迟时间,则将所述代码安全扫描任务转移至死信队列之前,所述方法还包括:
获取所述扫描端的在执行任务数量、在执行任务状态;
若所述在执行任务状态为正常,且所述在执行任务数量小于第一预设数量阈值,则将第一预设时间确定为扫描延迟时间;
若所述在执行任务状态为正常,且所述在执行任务数量大于或等于所述第一预设数量阈值,小于第二预设数量阈值,则将所述第二预设时间确定为扫描延迟时间;
若所述在执行任务状态为正常,且所述在执行任务数量大于或等于所述第二预设数量阈值,则根据所述在执行任务数量、所述第二预设数量阈值、所述第二预设时间计算得到扫描延迟时间。
本发明实施例中,为了避免扫描端任务大量堆积,出现流量峰值,需要获取扫描端的在执行任务数据。其中,在执行任务数据包括在执行任务数量、在执行任务状态。其中,在执行任务数量即扫描端正常进行扫描的任务数量,在执行任务状态即扫描端正常进行扫描的任务的执行状态,可以为正常、异常等状态。先识别任务的执行状态,若任务的执行状态为异常,则通过延长扫描延迟时间的方式暂时不对任务进行转发,若任务的执行状态为正常,再根据当前扫描端的在执行任务数据量调整扫描延迟时间。具体地,根据在执行任务数据量与第一预设数量阈值、第二预设数量阈值是比较结果确定扫描延迟时间。其中,第一预设数量阈值小于第二预设数量阈值,例如,第一预设数量阈值为15,第二预设数量阈值为25,也可以根据具体应用场景需求自定义,本发明实施例不做具体限定。其中,第一预设时间小于第二预设时间,若在执行任务数量小于第一预设数量阈值,则表明当前流量较小,将较小的第一预设时间配置为扫描延迟时间;若在执行任务数量大于或等于所述第一预设数量阈值,小于第二预设数量阈值,则表明当前流量较大,则将较大的第二预设时间配置为扫描延迟时间。其中第一预设时间可以为0,也可以为大于0的数值,本发明不对第一预设时间、第二预设时间的具体数值进行限定。若在执行任务数量大于或等于所述第二预设数量阈值,则表明当前流量非常大,若仅按照第二预设时间设定可能依然会造成任务堆积,需要基于在执行任务数量、所述第二预设数量阈值对第二预设时间进行修正,以得到适用于当前流量状况的扫描延迟时间。具体地,可以计算执行任务数量与第二预设数量阈值的比值(大于1),将此比值作为修正系数,并计算修正系数与第二预设时间的乘积,以实现对第二预设时间的延长,从而缓解扫描端流量高峰。
在一个本发明实施例中,为了进一步说明及限定,所述方法还包括:
若所述在执行任务状态为异常,则将所述第三预设时间确定为扫描延迟时间;
监听所述扫描端的在执行任务状态的更新,若所述在执行任务状态更新为正常,则重新获取所述扫描端的更新在执行任务数量,并基于所述更新在执行任务数量对所述扫描延迟时间进行更新。
本发明实施例中,第三预设时间为远超出任务处理时间的时间值,例如,24小时、48小时等,本发明实施例不做具体限定。留给扫描端运维人员处理系统运行异常的时间,并且实时监听在执行任务状态,若状态更新,且更新后的状态为正常,则表明扫描端异常已经处理,可以继续向扫描端转发代码安全扫描请求,需要重新获取当前的在执行任务数量,并根据该数量重新计算扫描延迟时间,并对扫描延迟时间进行更新。当扫描端运行异常时,通过将扫描延时时间延长,并监听扫描端的状态,能够在扫描端出现故障时,避免继续转发任务,使任务堆积,有效保证转发任务能够得到执行,从而提高代码安全扫描的成功率、及效率。
在一个本发明实施例中,为了进一步说明及限定,步骤所述将所述代码安全扫描任务添加至扫描延迟队列之后,所述方法还包括:
获取所述扫描端的预期扫描执行时间、扫描延迟时间;
根据所述预期扫描执行时间、所述扫描延迟时间计算得到预期扫描完成时间;
将所述扫描延迟时间、所述预期扫描完成时间发送至请求发起终端。
本发明实施例中,为了使请求发起用户能够了解扫描执行进度,将扫描延迟时间与预期扫描执行时间进行加和得到当前待扫描文件预期扫描完成的时间。例如,预期扫描执行时间为2小时,扫描延迟时间为1.5小时,则预期扫描完成时间为3.5小时,可以将3.5小时发送给用户,也可以根据系统时间计算出具体的时间点给用户。此外,将扫描延迟时间也发送给用户,让用户了解目前扫描还在排队、等待执行中,以此了解扫描任务进程,从而实现扫描进程的展示。其中,扫描延迟时间、预期扫描执行时间可以通过查询日志数据库中的数据得到。
本发明提供了一种请求转发方法,首先响应于代码安全扫描请求指令,根据所述代码安全扫描请求指令生成代码安全扫描任务,并将所述代码安全扫描任务添加至扫描延迟队列;若所述代码安全扫描任务的排队时间满足扫描延迟时间,则将所述代码安全扫描任务转移至死信队列,所述扫描延迟时间是根据扫描端的在执行任务数据确定的;将所述死信队列中的所述代码安全扫描任务转发至扫描端,以使所述扫描端对所述代码安全扫描任务携带的待扫描文件进行扫描。与现有技术相比,本发明实施例通过将代码安全扫描任务添加至扫描延迟队列,并基于扫描端的在执行任务数据确定扫描延迟时间,实现延迟过程与扫描端在执行任务流量的联动,避免扫描端任务过多,出现宕机情况,从而有效提升代码安全扫描效率。
进一步的,作为对上述图1所示方法的实现,本发明实施例提供了一种请求转发装置,如图3所示,该装置包括:
生成模块31,用于响应于代码安全扫描请求指令,根据所述代码安全扫描请求指令生成代码安全扫描任务,并将所述代码安全扫描任务添加至扫描延迟队列;
延迟模块32,用于若所述代码安全扫描任务的排队时间满足扫描延迟时间,则将所述代码安全扫描任务转移至死信队列,所述扫描延迟时间是根据扫描端的在执行任务数据确定的;
转发模块33,用于将所述死信队列中的所述代码安全扫描任务转发至扫描端,以使所述扫描端对所述代码安全扫描任务携带的待扫描文件进行扫描。
进一步地,所述生成模块31包括:
获取单元,用于响应于代码安全扫描请求指令,根据所述代码安全扫描请求指令所携带的待扫描文件信息、用户属性信息从缓冲空间中获取校验信息,所述校验信息包括与所述待扫描文件信息、所述用户属性信息相匹配的在先扫描请求的缓存扫描文件信息、请求发起时长;
第一校验单元,用于若所述校验信息为非空,则基于所述校验信息、所述待扫描文件信息进行重复请求校验;
第二校验单元,用于若所述重复请求校验的结果为通过校验,或所述校验信息、所述待扫描文件信息为空,则根据所述待扫描文件信息生成代码安全扫描任务。
进一步地,在具体应用场景中,所述第一校验单元具体用于若所述请求发起时长小于或等于预设时间间隔,则将所述重复请求校验的结果确定为未通过校验;
若所述请求发起时长大于所述预设时间间隔,则将缓存扫描文件信息与所述待扫描文件信息进行比对,若比对结果为相同,则将所述重复请求校验的结果确定为未通过校验,若所述比对结果为不同,则将所述重复请求校验的结果确定为通过校验。
进一步地,所述装置还包括:
第一获取模块,用于获取所述缓存扫描文件信息所对应的关联代码安全扫描任务的转发状态信息;
删除模块,用于若所述转发状态信息为未转发,则将所述缓存扫描文件信息所对应的代码安全扫描任务从所述扫描延迟队列中删除。
进一步地,所述装置还包括:
第二获取模块,用于获取所述扫描端的在执行任务数量、在执行任务状态;
第一确定模块,用于若所述在执行任务状态为正常,且所述在执行任务数量小于第一预设数量阈值,则将第一预设时间确定为扫描延迟时间;
第二确定模块,用于若所述在执行任务状态为正常,且所述在执行任务数量大于或等于所述第一预设数量阈值,小于第二预设数量阈值,则将所述第二预设时间确定为扫描延迟时间;
第三确定模块,用于若所述在执行任务状态为正常,且所述在执行任务数量大于或等于所述第二预设数量阈值,则根据所述在执行任务数量、所述第二预设数量阈值、所述第二预设时间计算得到扫描延迟时间。
进一步地,所述装置还包括:
第四确定模块,用于若所述在执行任务状态为异常,则将所述第三预设时间确定为扫描延迟时间;
监听模块,用于监听所述扫描端的在执行任务状态的更新,若所述在执行任务状态更新为正常,则重新获取所述扫描端的更新在执行任务数量,并基于所述更新在执行任务数量对所述扫描延迟时间进行更新。
进一步地,所述装置还包括:
第三获取模块,用于获取所述扫描端的预期扫描执行时间、扫描延迟时间;
计算模块,用于根据所述预期扫描执行时间、所述扫描延迟时间计算得到预期扫描完成时间;
发送模块,用于将所述扫描延迟时间、所述预期扫描完成时间发送至请求发起终端。
本发明提供了一种请求转发装置,首先响应于代码安全扫描请求指令,根据所述代码安全扫描请求指令生成代码安全扫描任务,并将所述代码安全扫描任务添加至扫描延迟队列;若所述代码安全扫描任务的排队时间满足扫描延迟时间,则将所述代码安全扫描任务转移至死信队列,所述扫描延迟时间是根据扫描端的在执行任务数据确定的;将所述死信队列中的所述代码安全扫描任务转发至扫描端,以使所述扫描端对所述代码安全扫描任务携带的待扫描文件进行扫描。与现有技术相比,本发明实施例通过将代码安全扫描任务添加至扫描延迟队列,并基于扫描端的在执行任务数据确定扫描延迟时间,实现延迟过程与扫描端在执行任务流量的联动,避免扫描端任务过多,出现宕机情况,从而有效提升代码安全扫描效率。
根据本发明一个实施例提供了一种存储介质,所述存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的请求转发方法。
图4示出了根据本发明一个实施例提供的一种计算机设备的结构示意图,本发明具体实施例并不对计算机设备的具体实现做限定。
如图4所示,该计算机设备可以包括:处理器(processor)402、通信接口(Communications Interface)404、存储器(memory)406、以及通信总线408。
其中:处理器402、通信接口404、以及存储器406通过通信总线408完成相互间的通信。
通信接口404,用于与其它设备比如客户端或其它服务器等的网元通信。
处理器402,用于执行程序410,具体可以执行上述请求转发方法实施例中的相关步骤。
具体地,程序410可以包括程序码,该程序码包括计算机操作指令。
处理器402可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。计算机设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器406,用于存放程序410。存储器406可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序410具体可以用于使得处理器402执行以下操作:
响应于代码安全扫描请求指令,根据所述代码安全扫描请求指令生成代码安全扫描任务,并将所述代码安全扫描任务添加至扫描延迟队列;
若所述代码安全扫描任务的排队时间满足扫描延迟时间,则将所述代码安全扫描任务转移至死信队列,所述扫描延迟时间是根据扫描端的在执行任务数据确定的;
将所述死信队列中的所述代码安全扫描任务转发至扫描端,以使所述扫描端对所述代码安全扫描任务携带的待扫描文件进行扫描。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。

Claims (10)

1.一种请求转发方法,其特征在于,包括:
响应于代码安全扫描请求指令,根据所述代码安全扫描请求指令生成代码安全扫描任务,并将所述代码安全扫描任务添加至扫描延迟队列;
若所述代码安全扫描任务的排队时间满足扫描延迟时间,则将所述代码安全扫描任务转移至死信队列,所述扫描延迟时间是根据扫描端的在执行任务数据确定的;
将所述死信队列中的所述代码安全扫描任务转发至扫描端,以使所述扫描端对所述代码安全扫描任务携带的待扫描文件进行扫描。
2.根据权利要求1所述的方法,其特征在于,所述响应于代码安全扫描请求指令,根据所述代码安全扫描请求指令生成代码安全扫描任务包括:
响应于代码安全扫描请求指令,根据所述代码安全扫描请求指令所携带的待扫描文件信息、用户属性信息从缓冲空间中获取校验信息,所述校验信息包括与所述待扫描文件信息、所述用户属性信息相匹配的在先扫描请求的缓存扫描文件信息、请求发起时长;
若所述校验信息为非空,则基于所述校验信息、所述待扫描文件信息进行重复请求校验;
若所述重复请求校验的结果为通过校验,或所述校验信息、所述待扫描文件信息为空,则根据所述待扫描文件信息生成代码安全扫描任务。
3.根据权利要求2所述的方法,其特征在于,所述若所述校验信息为非空,则基于所述校验信息、所述待扫描文件信息进行重复请求校验包括:
若所述请求发起时长小于或等于预设时间间隔,则将所述重复请求校验的结果确定为未通过校验;
若所述请求发起时长大于所述预设时间间隔,则将缓存扫描文件信息与所述待扫描文件信息进行比对,若比对结果为相同,则将所述重复请求校验的结果确定为未通过校验,若所述比对结果为不同,则将所述重复请求校验的结果确定为通过校验。
4.根据权利要求2所述的方法,其特征在于,所述比对结果为不同,所述若所述重复请求校验的结果为通过校验,或所述校验信息、所述待扫描文件信息为空,则根据所述待扫描文件信息生成代码安全扫描任务之后,所述方法还包括:
获取所述缓存扫描文件信息所对应的关联代码安全扫描任务的转发状态信息;
若所述转发状态信息为未转发,则将所述缓存扫描文件信息所对应的代码安全扫描任务从所述扫描延迟队列中删除。
5.根据权利要求1所述的方法,其特征在于,所述在执行任务数据包括在执行任务数量、在执行任务状态,所述若所述代码安全扫描任务的排队时间满足扫描延迟时间,则将所述代码安全扫描任务转移至死信队列之前,所述方法还包括:
获取所述扫描端的在执行任务数量、在执行任务状态;
若所述在执行任务状态为正常,且所述在执行任务数量小于第一预设数量阈值,则将第一预设时间确定为扫描延迟时间;
若所述在执行任务状态为正常,且所述在执行任务数量大于或等于所述第一预设数量阈值,小于第二预设数量阈值,则将所述第二预设时间确定为扫描延迟时间;
若所述在执行任务状态为正常,且所述在执行任务数量大于或等于所述第二预设数量阈值,则根据所述在执行任务数量、所述第二预设数量阈值、所述第二预设时间计算得到扫描延迟时间。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
若所述在执行任务状态为异常,则将所述第三预设时间确定为扫描延迟时间;
监听所述扫描端的在执行任务状态的更新,若所述在执行任务状态更新为正常,则重新获取所述扫描端的更新在执行任务数量,并基于所述更新在执行任务数量对所述扫描延迟时间进行更新。
7.根据权利要求1-6中任何一项所述的方法,其特征在于,所述将所述代码安全扫描任务添加至扫描延迟队列之后,所述方法还包括:
获取所述扫描端的预期扫描执行时间、扫描延迟时间;
根据所述扫描延迟时间生成预期排队时间,并根据所述预期扫描执行时间、所述扫描延迟时间计算得到预期扫描完成时间;
将所述预期排队时间、所述预期扫描完成时间发送至请求发起终端。
8.一种请求转发装置,其特征在于,包括:
生成模块,用于响应于代码安全扫描请求指令,根据所述代码安全扫描请求指令生成代码安全扫描任务,并将所述代码安全扫描任务添加至扫描延迟队列;
延迟模块,用于若所述代码安全扫描任务的排队时间满足扫描延迟时间,则将所述代码安全扫描任务转移至死信队列,所述扫描延迟时间是根据扫描端的在执行任务数据确定的;
转发模块,用于将所述死信队列中的所述代码安全扫描任务转发至扫描端,以使所述扫描端对所述代码安全扫描任务携带的待扫描文件进行扫描。
9.一种存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如权利要求1-7中任一项所述的请求转发方法对应的操作。
10.一种计算机设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-7中任一项所述的请求转发方法对应的操作。
CN202310913439.2A 2023-07-24 2023-07-24 请求转发方法及装置、存储介质、计算机设备 Pending CN116933269A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310913439.2A CN116933269A (zh) 2023-07-24 2023-07-24 请求转发方法及装置、存储介质、计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310913439.2A CN116933269A (zh) 2023-07-24 2023-07-24 请求转发方法及装置、存储介质、计算机设备

Publications (1)

Publication Number Publication Date
CN116933269A true CN116933269A (zh) 2023-10-24

Family

ID=88384059

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310913439.2A Pending CN116933269A (zh) 2023-07-24 2023-07-24 请求转发方法及装置、存储介质、计算机设备

Country Status (1)

Country Link
CN (1) CN116933269A (zh)

Similar Documents

Publication Publication Date Title
US10528405B2 (en) Methods, apparatus and computer programs for managing persistence
CN109104336B (zh) 服务请求处理方法、装置、计算机设备及存储介质
CN109714409B (zh) 一种消息的管理方法和系统
CN111835467B (zh) 消息发送方法、装置、计算机设备和存储介质
CN107688489B (zh) 一种调度任务的方法和系统
CN114500552B (zh) 边缘计算场景下的云边消息可靠性传输方法及装置
US10642585B1 (en) Enhancing API service schemes
CN111666745A (zh) 一种文件下载方法、装置、服务器及介质
CN107819825A (zh) 一种服务调度方法、装置和电子设备
CN114756356A (zh) 任务处理方法、工作节点设备、主节点设备及存储介质
US8359601B2 (en) Data processing method, cluster system, and data processing program
CN113518013B (zh) 一种实现心跳机制的处理方法及装置
CN111935782B (zh) 客户端重试机制的优化方法、存储介质
CN112969198A (zh) 数据传输方法、终端及存储介质
CN108989465B (zh) 共识方法、服务器、存储介质及分布式系统
CN116933269A (zh) 请求转发方法及装置、存储介质、计算机设备
WO2023043370A2 (en) Method and apparatus for sending logs, and log management system
CN110557324B (zh) 未读im消息处理方法及装置
CN112235363B (zh) 数据处理方法、装置、电子设备、存储介质及系统
CN111401819B (zh) 系统间数据推送方法及系统
CN111291104A (zh) 一种基于异步应答的传输数据的方法及系统
CN115086318B (zh) 一种云边消息协同方法及装置
CN113220491B (zh) 远程调用自适应负载均衡方法、装置、系统及计算机装备
CN113296982B (zh) 一种接口调用方法和装置
CN112527521B (zh) 消息处理方法及设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination