CN110955594B - 基于IAST检测Web应用请求覆盖度的方法及*** - Google Patents
基于IAST检测Web应用请求覆盖度的方法及*** Download PDFInfo
- Publication number
- CN110955594B CN110955594B CN201911041370.9A CN201911041370A CN110955594B CN 110955594 B CN110955594 B CN 110955594B CN 201911041370 A CN201911041370 A CN 201911041370A CN 110955594 B CN110955594 B CN 110955594B
- Authority
- CN
- China
- Prior art keywords
- request
- iast
- prototype
- web
- application program
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000012360 testing method Methods 0.000 claims abstract description 34
- 238000012544 monitoring process Methods 0.000 claims abstract description 6
- 230000006870 function Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 6
- 238000001514 detection method Methods 0.000 abstract description 4
- 238000004891 communication Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于IAST检测Web应用请求覆盖度的方法及***,其中,检测方法包括如下步骤:S1)、采用IAST测试工具插桩待检测应用程序所属的Web框架;S2)、启动应用程序,通过IAST测试工具获取Web框架分发的请求容器,请求容器中包括有为应用程序设计的所有请求的请求集合;S3)、请求集合包括有请求原型和请求方法,对请求集合中的所有请求进行解析;S4)、采用IAST测试工具动态监听来自应用程序的请求实例;S5)、根据正则法则,将步骤4中的请求实例分别与步骤3中的请求原型进行对应匹配,并展示匹配结果,从而得到请求覆盖度;采用上述方法来检测Web应用请求覆盖度,可配合现有的Web框架,完整地展示应用程序的所有应用接口,而且节省人力和时间成本。
Description
技术领域
本发明涉及Web应用请求检测技术领域,尤其涉及一种基于IAST检测Web应用请求覆盖度的方法及***。
背景技术
随着互联网的发展,网络应用越来越普及,人们的生活越来越方便,购物,点餐,通信聊天等都可以依靠网络应用去实现。理论上,一个网络应用的所有接口上都应该测试没有问题后再去给用户使用,可是由于开发人员与测试人员的专业技术范围不同以及开发人员流动性较大,往往并不能非常完整的检测一个应用下所有的请求接口,比如一个正常的java Web应用分为前端与后端,后端写了100个接口,但是前端页面只展示了70个,测试人员往往是通过页面点击测试,这时候就存在测试不完整,有些不安全的且没有暴露的后端接口可能会被黑客暴力攻击。目前对Web应用程序的请求覆盖度的检测主要是基于白盒工具和黑盒工具两种。利用白盒工具检测请求覆盖度的缺陷时,需要获取当前应用所有的代码文件,逐行匹配去获取对应的请求集合,耗时长,复杂度高,如果应用请求存储在数据库中则无法实现;利用黑盒工具检测请求覆盖度时,不能获取到所有请求数据,所以无法展现真正的覆盖度。
发明内容
本发明的目的是为解决上述技术问题的不足而提供一种可以获得应用程序的所有请求集合而且节省时间和人力成本的基于IAST检测Web应用请求覆盖度的方法。
本发明的另一目的是提供一种可以获得应用程序的所有请求集合而且节省时间和人力成本的基于IAST检测Web应用请求覆盖度的***。
为了实现上述目的,本发明公开了一种基于IAST检测Web应用请求覆盖度的方法,其包括如下步骤:
S1)、采用IAST测试工具插桩待检测应用程序所属的Web框架;
S2)、启动所述应用程序,通过所述IAST测试工具获取所述Web框架分发的请求容器,所述请求容器中包括有为所述应用程序设计的所有请求的请求集合;
S3)、所述请求集合包括有请求原型和请求方法,对所述请求集合中的所有请求进行解析,以根据每一所述请求方法的类型分别对应存储一请求原型;
S4)、采用所述IAST测试工具动态监听来自所述应用程序的请求实例;
S5)、根据正则法则,将所述步骤4中的所述请求实例分别与所述步骤3中的所述请求原型进行对应匹配,并展示匹配结果,从而得到请求覆盖度。
与现有技术相比,本发明基于IAST检测Web应用请求覆盖度的方法,采用IAST测试工具的插桩模式插桩待检测应用程序所属的Web框架,当应用程序启动时,通过该IAST测试工具可获取为应用程序设计的所有的请求集合,然后再从请求集合中解析出请求原型,然后又通过IAST测试工具动态监听来自客户端的请求实例,最后根据正则法则对请求实例与请求原型进行匹配,并将匹配结果展示出来,此时,如果请求实例与请求原型可以完全匹配,那么请求覆盖度即为100%,如果请求实例不能完全匹配请求原型,那么请求覆盖度即为请求实例的总数与请求原型的总数的比值;由此可知,采用上述方法来检测Web应用请求覆盖度,可配合现有的Web框架,完整地展示应用程序的所有应用接口,而且节省人力和时间成本。
较佳地,在所述步骤4中,通过返回的请求状态码来过滤非法请求。
较佳地,所述IAST测试工具中预设有多个插桩函数,在所述步骤1中插桩所述Web框架时,将多个所述插桩函数逐个与所述Web框架匹配,从而选出与所述Web框架相适配的插桩函数。
较佳地,所述Web框架包括包括spring、struts中的任一种。
本发明还公开一种基于IAST检测Web应用请求覆盖度的***,其包括插桩模块、请求集合获取模块、解析模块、请求实例收集模块和匹配展示模块;
所述插桩模块,用于采用IAST测试工具插桩待检测应用程序所属的Web框架;
所述请求集合获取模块,用于在所述应用程序启动时,基于所述插桩模块获取所述Web框架分发的请求容器,所述请求容器中包括有为所述应用程序设计的所有请求的请求集合,所述请求集合包括有请求原型和请求方法;
所述解析模块,用于对所述请求集合中的所有请求进行解析,以根据每一所述请求方法的类型分别对应存储一所述请求原型;
所述请求实例收集模块,用于根据所述插桩模块动态监听来自所述应用程序的请求实例;
所述匹配展示模块,用于根据正则法则,将所述请求实例收集模块收集到的所述请求实例分别与所述解析模块解析处的所述请求原型进行对应匹配,并展示匹配结果,从而得到请求覆盖度。
较佳地,所述请求实例收集模块通过返回的请求状态码来过滤非法请求。
较佳地,所述IAST测试工具中预设有多个插桩函数,在插桩所述Web框架时,所述插桩模块将多个所述插桩函数逐个与所述Web框架匹配,从而选出与所述Web框架相适配的插桩函数。
较佳地,所述Web框架包括包括spring、struts中的任一种。
本发明还公开一种基于IAST检测Web应用请求覆盖度的***,其包括:
一个或多个处理器;
存储器;
以及一个或多个程序,其中一个或多个程序被存储在所述存储器中,并且被配置成由所述一个或多个处理器执行,所述程序包括用于执行如上所述的基于IAST检测Web应用请求覆盖度的方法的指令。
本发明还公开一种计算机可读存储介质,其包括测试用计算机程序,所述计算机程序可被处理器执行以完成如上所述的基于IAST检测Web应用请求覆盖度的方法。
附图说明
图1为本发明实施例基于IAST检测Web应用请求覆盖度的方法的流程示意图。
图2为本发明实施例基于IAST检测Web应用请求覆盖度的***的原理结构示意图。
具体实施方式
为详细说明本发明的技术内容、结构特征、实现原理及所实现目的及效果,以下结合实施方式并配合附图详予说明。
如图1所示,本发明公开了一种基于IAST检测Web应用请求覆盖度的方法,其包括如下步骤:
S1)、采用IAST测试工具插桩待检测应用程序所属的Web框架;
S2)、启动应用程序,通过IAST测试工具获取Web框架分发的请求容器,请求容器中包括有为应用程序设计的所有请求的请求集合;
S3)、请求集合包括有请求原型和请求方法,对请求集合中的所有请求进行解析,以根据每一请求方法的类型分别对应存储一请求原型;请求方法类型指的是POST、PUT、GET以及DELETE等,在请求集合中,请求原型为请求容器中定义的请求,同一个请求原型可能对应有多个方法类型,那么就需要根据不同的方法类型存储对应的请求原型,如,同一个请求原型/user/{userId},有两个类型的请求方法,分别为GET和POST,那么存储器会存储POST-/user/{userId}和GET-/user/{userId}两条请求原型数据;
S4)、采用IAST测试工具动态监听来自应用程序的请求实例,该请求实例指的是用户发送的实际请求,如/user/0001;
S5)、根据正则法则,将步骤4中的请求实例分别与步骤3中的请求原型进行对应匹配,并展示匹配结果,从而得到请求覆盖度;需要说明的是,在进行匹配时,一个请求原型可对应多个请求实例,比如请求原型为/user/{userId},根据正则法则,与请求实例/user/0001和/user/0002均匹配,即这这两个请求实例对应一个请求原型;另外,如步骤3中,当请求原型/user/{userId}有两个类型的请求方法(GET和POST),请求原型/user/{userId}会以POST-/user/{userId}和GET-/user/{userId}形式出现两次,这样可以最大程度避免用户只测试某种方法的请求。
上述基于IAST检测Web应用请求覆盖度的方法,采用IAST测试工具的插桩模式插桩待检测应用程序所属的Web框架,当应用程序启动时,通过该IAST测试工具可动态获取为应用程序设计的所有的请求集合,然后再从请求集合中解析出请求原型,然后又通过IAST测试工具动态监听来自客户端的请求实例,最后根据正则法则对请求实例与请求原型进行匹配,并将匹配结果展示出来,此时,如果请求实例与请求原型可以完全匹配,那么请求覆盖度即为100%,如果请求实例不能完全匹配请求原型,那么请求覆盖度即为请求实例的总数与请求原型的总数的比值。由此可知,采用上述方法来检测Web应用请求覆盖度,可配合现有的Web框架,完整地展示应用程序的所有应用接口,而且节省人力和时间成本,另外,根据请求实例展示测试请求覆盖度,可以最大程度的贴近代码的原始请求。
较佳地,在上述检测步骤4中,可通过返回的请求状态码来过滤非法请求,比如404状态码代表没有找到对应的请求,那么该请求会被自动忽略,不会被计入请求覆盖度的测试对象中。
另外,由于Web框架的类型不唯一,目前java主流的Web框架有spring、struts等,那么,IAST测试工具中可预设有多个插桩函数,在上述步骤1中插桩Web框架时,将多个插桩函数逐个与Web框架匹配,从而选出与Web框架相适配的插桩函数。
为便于上述检测方法的执行,如图2,本发明还公开一种基于IAST检测Web应用请求覆盖度的***,其包括插桩模块10、请求集合获取模块11、解析模块12、请求实例收集模块13和匹配展示模块14;插桩模块10,用于采用IAST测试工具插桩待检测应用程序所属的Web框架;请求集合获取模块11,用于在应用程序启动时,基于插桩模块10获取Web框架分发的请求容器,请求容器中包括有为应用程序设计的所有请求的请求集合,请求集合包括有请求原型和请求方法;解析模块12,用于对请求集合中的所有请求进行解析,以根据每一请求方法的类型分别对应存储一请求原型;请求实例收集模块13,用于根据插桩模块10动态监听来自应用程序的请求实例;匹配展示模块14,用于根据正则法则,将请求实例收集模块13收集到的请求实例分别与解析模块12解析处的请求原型进行对应匹配,并展示匹配结果,从而得到请求覆盖度。关于本实施例中的基于IAST检测Web应用请求覆盖度的***的原理和工作过程相近上述基于IAST检测Web应用请求覆盖度的方法,在此不再赘述。
另外,本发明还公开一种基于IAST检测Web应用请求覆盖度的***,其包括一个或多个处理器、存储器、以及一个或多个程序,其中一个或多个程序被存储在存储器中,并且被配置成由一个或多个处理器执行,程序包括用于执行如上所述的基于IAST检测Web应用请求覆盖度的方法的指令。
另外,本发明还公开一种计算机可读存储介质,其包括测试用计算机程序,计算机程序可被处理器执行以完成如上所述的基于IAST检测Web应用请求覆盖度的方法。
以上所揭露的仅为本发明的较佳实例而已,当然不能以此来限定本发明之权利范围,因此依本发明申请专利范围所作的等同变化,仍属于本发明所涵盖的范围。
Claims (6)
1.一种基于IAST检测Web应用请求覆盖度的方法,其特征在于,包括如下步骤:
S1)、采用IAST测试工具插桩待检测应用程序所属的Web框架;
S2)、启动所述应用程序,通过所述IAST测试工具获取所述Web框架分发的请求容器,所述请求容器中包括有为所述应用程序设计的所有请求的请求集合;
S3)、所述请求集合包括有请求原型和请求方法,对所述请求集合中的所有请求进行解析,以根据每一所述请求方法的类型分别对应存储一请求原型;所述请求原型为所述请求容器中定义的请求,同一个请求原型对应有若干类型的请求方法,以获得与不同请求方法和不同请求类型相对应的若干请求原型数据;
所述请求方法类型包括POST、PUT、GET以及DELETE中的任一种;当同一个所述请求原型对应有多个方法类型时,根据不同的方法类型存储该对应的请求原型;
S4)、采用所述IAST测试工具动态监听来自所述应用程序的请求实例;
S5)、根据正则法则,将所述步骤S4)中的所述请求实例分别与所述步骤S3)中的所述请求原型数据进行对应匹配,并展示匹配结果,从而得到请求覆盖度,在进行匹配时,一个请求原型可对应多个所述请求实例;其中,在所述步骤S4)中,通过返回的请求状态码来过滤非法请求;
所述IAST测试工具中预设有多个插桩函数,在所述步骤S1)中插桩所述Web框架时,将多个所述插桩函数逐个与所述Web框架匹配,从而选出与所述Web框架相适配的插桩函数。
2.根据权利要求1所述的基于IAST检测Web应用请求覆盖度的方法,其特征在于,所述Web框架包括包括spring、struts中的任一种。
3.一种基于IAST检测Web应用请求覆盖度的***,其特征在于,包括插桩模块、请求集合获取模块、解析模块、请求实例收集模块和匹配展示模块;
所述插桩模块,用于采用IAST测试工具插桩待检测应用程序所属的Web框架;
所述请求集合获取模块,用于在所述应用程序启动时,基于所述插桩模块获取所述Web框架分发的请求容器,所述请求容器中包括有为所述应用程序设计的所有请求的请求集合,所述请求集合包括有请求原型和请求方法;
所述解析模块,用于对所述请求集合中的所有请求进行解析,以根据每一所述请求方法的类型分别对应存储一所述请求原型;所述请求原型为所述请求容器中定义的请求,同一个请求原型对应有若干类型的请求方法,以获得与不同请求方法和不同请求类型相对应的若干请求原型数据;所述请求方法类型包括POST、PUT、GET以及DELETE中的任一种;当同一个所述请求原型对应有多个方法类型时,根据不同的方法类型存储该对应的请求原型;
所述请求实例收集模块,用于根据所述插桩模块动态监听来自所述应用程序的请求实例;所述请求实例收集模块通过返回的请求状态码来过滤非法请求;
所述匹配展示模块,用于根据正则法则,将所述请求实例收集模块收集到的所述请求实例分别与所述解析模块解析出的所述请求原型数据进行对应匹配,并展示匹配结果,从而得到请求覆盖度,在进行匹配时,一个请求原型可对应多个所述请求实例;
所述IAST测试工具中预设有多个插桩函数,在插桩所述Web框架时,所述插桩模块将多个所述插桩函数逐个与所述Web框架匹配,从而选出与所述Web框架相适配的插桩函数。
4.根据权利要求3所述的基于IAST检测Web应用请求覆盖度的***,其特征在于,所述Web框架包括包括spring、struts中的任一种。
5.一种基于IAST检测Web应用请求覆盖度的***,其特征在于,包括:
一个或多个处理器;
存储器;
以及一个或多个程序,其中一个或多个程序被存储在所述存储器中,并且被配置成由所述一个或多个处理器执行,所述程序包括用于执行如权力要求1至2任一项所述的基于IAST检测Web应用请求覆盖度的方法的指令。
6.一种计算机可读存储介质,其特征在于,包括测试用计算机程序,所述计算机程序可被处理器执行以完成如权力要求1至2任一项所述的基于IAST检测Web应用请求覆盖度的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911041370.9A CN110955594B (zh) | 2019-10-29 | 2019-10-29 | 基于IAST检测Web应用请求覆盖度的方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911041370.9A CN110955594B (zh) | 2019-10-29 | 2019-10-29 | 基于IAST检测Web应用请求覆盖度的方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110955594A CN110955594A (zh) | 2020-04-03 |
CN110955594B true CN110955594B (zh) | 2024-05-03 |
Family
ID=69975826
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911041370.9A Active CN110955594B (zh) | 2019-10-29 | 2019-10-29 | 基于IAST检测Web应用请求覆盖度的方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110955594B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113722048B (zh) * | 2021-08-31 | 2023-10-27 | 杭州默安科技有限公司 | 一种k8s中IAST agent自动化部署方法和*** |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103428249A (zh) * | 2012-05-23 | 2013-12-04 | 腾讯科技(深圳)有限公司 | 一种http请求包的收集及处理方法、***和服务器 |
CN106126417A (zh) * | 2016-06-17 | 2016-11-16 | 深圳开源互联网安全技术有限公司 | 交互式应用程序安全测试方法及其*** |
WO2017163141A1 (en) * | 2016-03-21 | 2017-09-28 | Checkmarx Ltd. | Integrated interactive application security testing |
EP3401827A1 (en) * | 2017-05-10 | 2018-11-14 | Checkmarx Ltd. | Method and system of static and dynamic data flow analysis |
CN108845941A (zh) * | 2018-06-15 | 2018-11-20 | 郑州云海信息技术有限公司 | 一种sql注入测试覆盖率统计方法及*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10387656B2 (en) * | 2016-03-21 | 2019-08-20 | Checkmarx Ltd. | Integrated interactive application security testing |
-
2019
- 2019-10-29 CN CN201911041370.9A patent/CN110955594B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103428249A (zh) * | 2012-05-23 | 2013-12-04 | 腾讯科技(深圳)有限公司 | 一种http请求包的收集及处理方法、***和服务器 |
WO2017163141A1 (en) * | 2016-03-21 | 2017-09-28 | Checkmarx Ltd. | Integrated interactive application security testing |
CN106126417A (zh) * | 2016-06-17 | 2016-11-16 | 深圳开源互联网安全技术有限公司 | 交互式应用程序安全测试方法及其*** |
EP3401827A1 (en) * | 2017-05-10 | 2018-11-14 | Checkmarx Ltd. | Method and system of static and dynamic data flow analysis |
CN108845941A (zh) * | 2018-06-15 | 2018-11-20 | 郑州云海信息技术有限公司 | 一种sql注入测试覆盖率统计方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN110955594A (zh) | 2020-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190171542A1 (en) | Method And System For Real-User Capable Detecting Of The Visual Completeness Of Browser Rendering Process | |
CN110362483B (zh) | 性能数据采集方法、装置、设备及存储介质 | |
US10657036B2 (en) | Determining visual testing coverages | |
WO2016008398A1 (zh) | 程序性能测试方法和装置 | |
CN103281177A (zh) | 对Internet信息***恶意攻击的检测方法及*** | |
CN107046526A (zh) | 基于Fuzzing算法的分布式异构网络漏洞挖掘方法 | |
CN110442511A (zh) | 可视化埋点测试方法及装置 | |
CN109376069B (zh) | 一种测试报告的生成方法及设备 | |
US20100198796A1 (en) | Treemap visualizations of database time | |
US20190286687A1 (en) | Identification of sequential browsing operations | |
CN101917286A (zh) | 互联网应用***中实现跨浏览器的Web性能分析***及方法 | |
CN113238917A (zh) | 前端性能监控方法、装置、设备及存储介质 | |
CN110807548A (zh) | 基于风电竞价用户的数据采集方法、装置、设备及介质 | |
CN110955594B (zh) | 基于IAST检测Web应用请求覆盖度的方法及*** | |
CN114528457A (zh) | Web指纹检测方法及相关设备 | |
CN107748715B (zh) | 基于Unity的纹理贴图配置信息检测方法及其*** | |
KR20120086926A (ko) | 포렌식 감사 데이터 시각화 시스템 | |
CN114116872A (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
CN116467110A (zh) | 一种平板电脑的损坏检测方法及*** | |
CN110971673A (zh) | 一种获取深度学习平台用户活跃度的计算机装置及方法 | |
CN113419932B (zh) | 一种设备性能分析方法和装置 | |
CN115509851A (zh) | 页面监控方法、装置及设备 | |
CN113379285A (zh) | 建筑环境监测方法、装置、设备、存储介质及程序产品 | |
CN110298935B (zh) | 一种获取用户操作习惯信息的方法、诊断设备、及服务器 | |
CN110825643A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |