一种流式自适应深度解码方法及装置与流程
- 国知局
- 2024-08-02 14:21:21
本发明涉及解码,特别涉及一种流式自适应深度解码方法及装置。
背景技术:
1、waf(web application firewall,web应用程序防火墙)主要针对web应用程序进行安全防护,如对http等请求流量进行检测,防止web应用遭受恶意攻击,减少安全隐患。web应用中传递的流量数据通常会进行编码,特别是影响web服务逻辑的流量数据通常会经过多层编码,waf进行检测前需对其进行解码,通常会将接收的请求流量数据先全部缓存在内存中再进行解码,但若数据中存在大文件或被恶意填充无用数据,则会导致请求流量数据激增,从而使解码所需的内存激增,产生数据堆积问题。
技术实现思路
1、为解决上述缺陷或不足,本发明提供了一种流式自适应深度解码方法、装置、电子设备及存储介质,采用多叉树结构构建自适应深度解码树,分段流式接收深层编码数据并存入缓冲区,自动判断编码类型并进行对应解码,进一步的,缓冲区保存深层解码的边界信息,并在下一段数据解码时进行恢复,从而维护多个深层解码数据段状态,实现流式自适应深度解码。
2、本发明的一个方面,提供了一种流式自适应深度解码方法,用于waf设备,包括:
3、将深度编码的流量数据划分为多个数据段,将所述多个数据段依次发送至解码器;
4、解码器将输入数据存储至根节点对应的第一临时缓冲区,并判断输入数据可能的解码类型,根据可能的解码类型创建第一层解码节点;当检测到所述第一临时缓冲区已满或者输入数据存在流量数据的整体结束标记时,将所述第一临时缓冲区中的数据和可能的解码类型输入至第一层解码节点;
5、第一层解码节点根据根节点判断出的可能的解码类型,对来自所述第一临时缓冲区的数据进行解码尝试,标记出所述第一层解码节点中解码成功的解码节点,并将解码后的数据存储至所述解码成功的解码节点对应的第二临时缓冲区中;判断第二临时缓冲区中的数据是否需要进一步解码,是则判断出第二临时缓冲区中的数据可能的解码类型,根据可能的解码类型创建第二层解码节点;当检测到所述第二临时缓冲区已满或者所述第二临时缓冲区中的数据存在流量数据的整体结束标记时,将所述第二临时缓冲区中的数据和其可能的解码类型输入至第二层解码节点;
6、第二层解码节点按照所述第一层解码节点对输入数据的解码方式,执行对输入数据的解码操作,直至当前层解码节点产生的解码后的数据无需进一步解码,则输出当前层解码节点产生的解码后的数据;
7、输入解码器的后续数据段按照第一数据段遍历的解码器的解码路径进行解码处理,直至将全部数据段解码完毕并输出。
8、进一步的,还包括:
9、第一层解码节点中解码成功的解码节点将解码后的数据的解码边界信息存储至该解码节点对应的临时缓冲区,所述解码边界信息包括所述解码后的数据中需要后续输入数据才能继续解码的信息;
10、若第一层解码节点中解码成功的解码节点在解码时未识别到数据中的结束标记且其对应的临时缓冲区未满,则等待后续数据输入该解码节点后,根据所述解码边界信息继续解码。
11、进一步的,所述输出当前层解码节点产生的解码后的数据的步骤包括:
12、直接输出当前层解码节点产生的解码后的数据,
13、或者,将当前层解码节点产生的解码后的数据按照解码路径逐层返回至上一层节点,直至返回至所述根节点,从所述根节点输出所述解码后的数据;若全部数据段均解码完毕,则将最后的解码数据段返回至根节点后,销毁该根节点对应的解码树。
14、进一步的,所述第一层解码节点根据根节点判断出的可能的解码类型,对来自所述第一临时缓冲区的数据进行解码尝试的步骤,包括:
15、令创建的每个第一层解码节点只负责一种可能的解码类型的解码尝试,并将解码失败的第一层解码节点销毁。
16、进一步的,所述判断第二临时缓冲区中的数据是否需要进一步解码的步骤,包括:
17、若第二临时缓冲区中的数据符合一种或多种编码类型,或者无法判断出第二临时缓冲区中的数据的编码类型,则确定第二临时缓冲区中的数据需要进一步解码;
18、若第二临时缓冲区中的数据已完成所有编码层的解码,则确定第二临时缓冲区中的数据无需进一步解码。
19、本发明的第二方面,提供了一种流式自适应深度解码装置,包括:
20、流式分段模块,用于将深度编码的流量数据划分为多个数据段,将所述多个数据段依次发送至解码器;
21、解码器,用于将输入数据存储至根节点对应的第一临时缓冲区,并判断输入数据可能的解码类型,根据可能的解码类型创建第一层解码节点;当检测到所述第一临时缓冲区已满或者输入数据存在流量数据的整体结束标记时,将所述第一临时缓冲区中的数据和可能的解码类型输入至第一层解码节点;第一层解码节点根据根节点判断出的可能的解码类型,对来自所述第一临时缓冲区的数据进行解码尝试,标记出所述第一层解码节点中解码成功的解码节点,并将解码后的数据存储至所述解码成功的解码节点对应的第二临时缓冲区中;判断第二临时缓冲区中的数据是否需要进一步解码,是则判断出第二临时缓冲区中的数据可能的解码类型,根据可能的解码类型创建第二层解码节点;当检测到所述第二临时缓冲区已满或者所述第二临时缓冲区中的数据存在流量数据的整体结束标记时,将所述第二临时缓冲区中的数据和其可能的解码类型输入至第二层解码节点;第二层解码节点按照所述第一层解码节点对输入数据的解码方式,执行对输入数据的解码操作,直至当前层解码节点产生的解码后的数据无需进一步解码,则输出当前层解码节点产生的解码后的数据;输入解码器的后续数据段按照第一数据段遍历的解码器的解码路径进行解码处理,直至将全部数据段解码完毕并输出。
22、进一步的,所述解码器进一步用于:
23、第一层解码节点中解码成功的解码节点将解码后的数据的解码边界信息存储至该解码节点对应的临时缓冲区,所述解码边界信息包括所述解码后的数据中需要后续输入数据才能继续解码的信息;
24、若第一层解码节点中解码成功的解码节点在解码时未识别到数据中的结束标记且其对应的临时缓冲区未满,则等待后续数据输入该解码节点后,根据所述解码边界信息继续解码。
25、进一步的,所述解码器进一步用于:
26、直接输出当前层解码节点产生的解码后的数据,
27、或者,将当前层解码节点产生的解码后的数据按照解码路径逐层返回至上一层节点,直至返回至所述根节点,从所述根节点输出所述解码后的数据;若全部数据段均解码完毕,则将最后的解码数据段返回至根节点后,销毁该根节点对应的解码树。
28、进一步的,所述解码器进一步用于:
29、令创建的每个第一层解码节点只负责一种可能的解码类型的解码尝试,并将解码失败的第一层解码节点销毁。
30、进一步的,所述解码器进一步用于:
31、若第二临时缓冲区中的数据符合一种或多种编码类型,或者无法判断出第二临时缓冲区中的数据的编码类型,则确定第二临时缓冲区中的数据需要进一步解码;
32、若第二临时缓冲区中的数据已完成所有编码层的解码,则确定第二临时缓冲区中的数据无需进一步解码。
33、本发明提供的一种流式自适应深度解码方法及装置,实现了深层编码数据的流式自适应深度解码,边输入部分数据边获取部分解码后数据,无需获取完整数据再进行解码,避免了解码数据信息堆积,减少了内存消耗,提高了深层编码数据的解码效率与稳定性,也避免了攻击者通过构建大数据包绕过waf等情况,降低了安全隐患。进一步的,本发明还解决了深层编码数据分段流式解码时产生复杂边界信息的问题,避免了因复杂边界信息丢失深度解码数据段之间的状态关系。
本文地址:https://www.jishuxx.com/zhuanli/20240801/242524.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。