一种页面检测方法及相关装置与流程

文档序号:27623097发布日期:2021-11-29 14:45阅读:82来源:国知局
一种页面检测方法及相关装置与流程

1.本技术涉及计算机技术领域,特别涉及一种页面检测方法、页面检测装置、服务器以及计算机可读存储介质。


背景技术:

2.随着互联网技术的不断发展,出现了越来越多的网络漏洞攻击。其中,大部分的漏洞攻击都是发生在网站的应用层上,即页面中。因此,页面漏洞检测作为网站站点脆弱性检测的重要一环。
3.相关技术中,页面漏洞检测主要是通过爬取网站的所有url(uniform resource locator,统一资源定位器),并对网站的url各项输入点进行漏洞检查(例如,sql(structured query language,结构化查询语言)注入、xss(cross site scripting,跨站脚本攻击)攻击、目录遍历、命令注入、跨站请求伪造等)。并且,漏洞扫描器检测的输入点主要在get与post参数、访问资源名称、reffer、useragent、cookie等静态表现中。但是,随着页面技术的不断发展,页面中存在越来越多的动态表现,页面漏洞检测无法全面的进行检测,漏洞检测覆盖率不足,导致有些漏洞脆弱点无法被检测到,降低页面检测的准确性。
4.因此,如何提高页面检测的准确性是本领域技术人员关注的重点问题。


技术实现要素:

5.本技术的目的是提供一种页面检测方法、页面检测装置、服务器以及计算机可读存储介质,以将页面在虚拟运行环境中对页面进行动态检测,提高页面检测的准确性。
6.为解决上述技术问题,本技术提供一种页面检测方法,包括:
7.获取待检测页面;
8.在虚拟运行环境对所述待检测网页进行动态检测,得到检测结果;其中,所述虚拟运行环境为根据浏览器接口构造的浏览器环境。
9.可选的,在虚拟运行环境对所述待检测网页进行动态检测,得到检测结果,包括:
10.在所述虚拟环境中对所述待检测网页执行动态检测操作,得到所述检测结果;其中,所述动态检测操作至少包括js检测、dom触发检测以及回调处理中的一种或多种的组合。
11.可选的,当所述动态检测操作包括所述js检测时,所述在所述虚拟环境中对所述待检测网页执行动态检测操作得到所述检测结果的步骤,包括:
12.在所述虚拟环境中加载所述待检测网页,并对所述待检测网页注入目标js代码;
13.对所述目标js代码进行漏洞跟踪,得到跟踪结果并作为所述检测结果。
14.可选的,当所述动态检测操作包括所述dom触发检测时,所述在所述虚拟环境中对所述待检测网页执行动态检测操作得到所述检测结果的步骤,包括:
15.在所述虚拟环境中加载所述待检测网页,并对所述待检测网页中的每个事件进行触发,得到每个事件下的页面快照;
16.对所述所有所述页面快照进行漏洞分析,得到所述检测结果。
17.可选的,当所述动态检测操作包括所述回调处理时,所述在所述虚拟环境中对所述待检测网页执行动态检测操作得到所述检测结果的步骤,包括:
18.在所述虚拟环境中加载所述待检测网页,并在所述待检测网页的末尾添加钩子;
19.当所述钩子触发时,通过回调函数对所述待检测网页的日志报告进行漏洞分析,得到所述检测结果。
20.可选的,获取待检测页面,包括:
21.将扫描得到的待检测页面添加至任务队列中;
22.任务线程集群中的任务线程按照顺序从所述任务队列中获取所述待检测页面。
23.可选的,还包括:
24.当动态检测结束后,所述任务线程判断所述浏览器环境是否存活;
25.若否,重启所述浏览器环境。
26.本技术还提供一种页面检测装置,包括:
27.页面获取模块,用于获取待检测页面;
28.动态检测模块,用于在虚拟运行环境对所述待检测网页进行动态检测,得到检测结果;其中,所述虚拟运行环境为根据浏览器接口构造的浏览器环境。
29.本技术还提供一种服务器,包括:
30.存储器,用于存储计算机程序;
31.处理器,用于执行所述计算机程序时实现如上所述的页面检测方法的步骤。
32.本技术还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的页面检测方法的步骤。
33.本技术所提供的一种页面检测方法,包括:获取待检测页面;在虚拟运行环境对所述待检测网页进行动态检测,得到检测结果;其中,所述虚拟运行环境为根据浏览器接口构造的浏览器环境。
34.通过在虚拟运行环境中对该待检测网页进行动态检测,其中该虚拟运行换件为根据浏览器接口构造的浏览器环境,也就是将待检测页面运行在虚拟出的浏览器中,并进行动态检测,而不是仅仅对页面进行静态检测,实现了对各个动态表现例如js事件等进行检测,提高页面检测的覆盖率避免遗漏检测点,提高了页面检测的准确性。
35.本技术还提供一种页面检测装置、服务器以及计算机可读存储介质,具有以上有益效果,在此不做具体限定。
附图说明
36.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
37.图1为本技术实施例所提供的一种页面检测方法的流程图;
38.图2为本技术实施例所提供的另一种页面检测方法的流程图;
39.图3为本技术实施例所提供的一种页面检测装置的结构示意图。
具体实施方式
40.本技术的核心是提供一种页面检测方法、页面检测装置、服务器以及计算机可读存储介质,以将页面在虚拟运行环境中对页面进行动态检测,提高页面检测的准确性。
41.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
42.相关技术中,页面漏洞检测主要是通过爬取网站的所有url,并对网站的url各项输入点进行漏洞检查(例如,sql注入、xs攻击、目录遍历、命令注入、跨站请求伪造等)。并且,漏洞扫描器检测的输入点主要在get与post参数、访问资源名称、reffer、useragent、cookie等静态表现中。但是,随着页面技术的不断发展,页面中存在越来越多的动态表现,页面漏洞检测无法全面的进行检测,漏洞检测覆盖率不足,导致有些漏洞脆弱点无法被检测到,降低页面检测的准确性。
43.因此,本技术提供一种页面检测方法,通过在虚拟运行环境中对该待检测网页进行动态检测,其中该虚拟运行换件为根据浏览器接口构造的浏览器环境,也就是将待检测页面运行在虚拟出的浏览器中,并进行动态检测,而不是仅仅对页面进行静态检测,实现了对各个动态表现例如js事件等进行检测,提高页面检测的覆盖率避免遗漏检测点,提高了页面检测的准确性。
44.为了提高页面检测的覆盖率,而不仅仅对页面中的静态链接进行检测,实现将页面在模拟真实运行的环境中进行检测,提高检测准确性。以下通过一个实施例,对本技术提供的一种页面检测方法进行说明。
45.请参考图1,图1为本技术实施例所提供的一种页面检测方法的流程图。
46.本实施例中,该方法可以包括:
47.s101,获取待检测页面;
48.本步骤旨在获取待检测页面。其中,待检测页面为本实施例中需要进行动态检测的页面。其中,可以是任务线程获取待检测页面。
49.进一步的,可以是扫描引擎从网络中抓取到对应的待检测页面,然后本实施例中的步骤对该待检测页面进行检测。
50.并且,可以理解的是,为了方便描述,可以将待检测页面描述为一个任务。
51.进一步的,为了提高对多个页面进行检测的效率,本可选方案中采用任务线程集群对多个待检测页面进行处理。因此,本步骤可以包括:
52.步骤1,将扫描得到的待检测页面添加至任务队列中;
53.步骤2,任务线程集群中的任务线程按照顺序从任务队列中获取待检测页面。
54.可见,本可选方案中主要是对如何对个多个待检测页面进行处理做说明。本可选方案中主要是通过扫描引擎获取到多个待检测页面,然后通过任务队列将多个待检测页面发送至多个任务线程中,以便每个任务线程可以从任务队列中获取到对应的待检测页面并进行检测处理。
55.很显然,通过本可选方案中将多个待检测页面通过任务队列发送至多个任务线程中,实现了对多个待检测页面进行并发处理,提高了检测的性能。并且,该待检测页面作为
一个任务,可以运行在非阻塞模式,将该任务放入到任务队列中时,只要存在可用的任务线程,就可以调用该任务线程对任务进行检测。
56.此外,为了对每个任务线程的执行过程进行管理,保持页面检查过程稳定运行,本实施例还可以包括:
57.步骤1,当动态检测结束后,任务线程判断浏览器环境是否存活;
58.步骤2,若否,重启浏览器环境。
59.可见,本可选方案中主要是对如何管理任务线程进行说明。其中,为了避免出现由于崩溃而无法自启的浏览器环境,判断每个任务线程对应的浏览器环境是否存活,若不存活则重启该浏览器环境。
60.此外,在浏览器环境加载待检测页面之前,需要确保浏览器环境中至少有多于一个窗口打开,以防止有一些js关闭访问页面,以便在实际操作中还能够切换到其他可用的窗口。
61.此外,可以清理浏览器的cookie,然后使浏览器环境中的浏览器接受预设好的cookie。
62.当任务线程关闭的时候,如果有正在运行的任务则需要等待它完成,已避免一些错误或者僵尸进程发生。并停止消费新的任务,关闭浏览器环境。
63.当任务线程集群关闭时,遍历关闭任务线程集群中的每一个任务线程实例,并清理任务队列、磁盘文件、回调函数、待处理的任务。
64.s102,在虚拟运行环境对待检测网页进行动态检测,得到检测结果;其中,虚拟运行环境为根据浏览器接口构造的浏览器环境。
65.在s101的基础上,本步骤旨在虚拟运行环境对待检测网页进行动态检测,得到检测结果;其中,虚拟运行环境为根据浏览器接口构造的浏览器环境。也就是说,将该待检测页面运行在该构造出的浏览器环境中,以便在页面实际加载运行的过程中,对页面进行检测。
66.其中,构造浏览器环境的过程可以是使用selenium调用webdriver合入chrome浏览器。其中,selenium是一个用于web应用程序测试的工具。主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成测试脚本。其中,webdriver为该测试工具提供的浏览器接口。其中,chrome浏览器为本实施例中采用的浏览器程序。
67.现有技术中,由于检测方式未对js等动态内容进行检测。仅仅是对页面中的url等静态元素进行检测,导致检测的覆盖率较低。因此,本实施例中在虚拟运行环境中对该待检测页面进行动态检测,也就是在检测过程中通过浏览器环境对该待检测页面提供了dom(document object model,文档对象模型)、js(javascript,解释型或即时编译型的编程语言)以及ajax(asynchronous javascript and xml,异步javascript和xml(extensible markup language,可扩展标记语言))的支持,实现了对这些内容进一步触发或跳转等操作,最终实现检测。
68.进一步的,为了实现对待检测页面进行动态检测,即在页面的各个方面进行事件触发或采用跟踪过程的方式对页面进行检测,本步骤可以包括:
69.在虚拟环境中对待检测网页执行动态检测操作,得到检测结果;其中,动态检测操作至少包括js检测、dom触发检测以及回调处理中的一种或多种的组合。
70.可见,本可选方案中主要是说明对待检测网页执行的动态检测操作至少包括js检测、dom触发检测以及回调处理中的一种或多种的组合。
71.其中,js检测是指对在预设的函数环境中对待检测页面中进行js污点跟踪,根据跟踪结果分析出该网页的漏洞。可见,该检测主要是对页面中的js代码进行检测。其中,具体是在相同的作用域下对待检测页面注入预设的js代码,作为引入的污点。
72.其中,dom触发检测是指对待检测页面的dom树进行探索,并获取每个状态下的页面快照,对该待检测页面探索出的所有页面快照进行分析,得到检测结果。可见,该检测主要是对页面中可以被触发的事件进行检测,例如,对包括但不限于js的输入事件、多元素提取的url以及ajax请求链接进行检测。
73.其中,回调处理是指在页面加载或运行结束后,根据得到的报告、日志或是汇总数据进行分析,得到检测结果。
74.可以知道的是,本可选方案中的三种检测操作,可以任意组合成一种或多种的组合进行检测。具体的,可以根据动态检测的范围或角度进行选择。例如,可以是dom触发检测与回调处理的组合,也可以是js检测、dom触发检测以及回调处理的组合。
75.基于该可选方案,当动态检测操作包括js检测时,在虚拟环境中对待检测网页执行动态检测操作得到检测结果的步骤,可以包括:
76.步骤1,在虚拟环境中加载待检测网页,并对待检测网页注入目标js代码;
77.步骤2,对目标js代码进行漏洞跟踪,得到跟踪结果并作为检测结果。
78.可见,本可选方案中主要是对如何进行js检测进行说明,也就是说明如何进行js跟踪检测。在跟踪过程中需要保存事件的触发和js链接的点击所产生的页面快照,并保存每一个url打开的窗口,以及http响应对象。其中,跟踪过程需要跳过的资源,比如已经触发的事件和单击的链接等。并且,在跟踪过程中,对于跨域的url需要进行忽略,以免无止境的进行扫描,避免出现浏览器环境卡死等问题。
79.基于该可选方案,当动态检测操作包括dom触发检测时,在虚拟环境中对待检测网页执行动态检测操作得到检测结果的步骤,可以包括:
80.步骤1,在虚拟环境中加载待检测网页,并对待检测网页中的每个事件进行触发,得到每个事件下的页面快照;
81.步骤2,对所有页面快照进行漏洞分析,得到检测结果。
82.可见,本可选方案中主要是对如何进行dom触发检测进行说明,也就是说明如何进行dom探索以及进行检测。其中,dom探索主要是通过模拟的方式触发页面中的事件。
83.在dom探索中,与js相关的输入事件包括但不限于change,blur,focus,select,keyup,keypress,keydown,input等。并且,还可以从link、href、src元素从提取url。还可以设置代理进行拦截请求来提取ajax请求链接,并且通过代理方式还可以控制浏览器网络最大并发请求数,以降低性能消耗。
84.其中,探索浏览器的dom树并捕获每个状态变化的页面快照,直到没有其他可用状态为止。并且限制dom树的深度,遍历所有具有事件的元素,并触发事件进行捕获。其中,可以模拟真实的文本输入并触发相关的事件,捕获请求响应并将其解析为页面元素。还捕获
由web页面(ajax等)执行的http请求并转换为页面,以帮助进行漏洞分析。在事件触发并单击js链接后存储页面快照字典。在遍历可审计的dom表单或cookie时,可以删除没有与之相关的事件dom来节省检测时间。
85.基于该可选方案,当动态检测操作包括回调处理时,在虚拟环境中对待检测网页执行动态检测操作得到检测结果的步骤,可以包括:
86.步骤1,在虚拟环境中加载待检测网页,并在待检测网页的末尾添加钩子;
87.步骤2,当钩子触发时,通过回调函数对待检测网页的日志报告进行漏洞分析,得到检测结果。
88.可见,本可选方案中主要是对如何进行回调处理进行说明,也就是说明如何进行回调处理。其中,当没有执行其他检测时,本可选方案中可以是根据页面加载或运行后的日志数据进行分析,得到检测结果。当执行其他检测时,可以是获取其他检测的结果进行分析,得到该检测结果。
89.综上,本实施例通过在虚拟运行环境中对该待检测网页进行动态检测,其中该虚拟运行换件为根据浏览器接口构造的浏览器环境,也就是将待检测页面运行在虚拟出的浏览器中,并进行动态检测,而不是仅仅对页面进行静态检测,实现了对各个动态表现例如js事件等进行检测,提高页面检测的覆盖率避免遗漏检测点,提高了页面检测的准确性。
90.为了进一步提高本实施例中对页面进行检测的准确性,提高检测过程的效率,避免出现操作问题。以下通过一个具体的实施例,对本技术提供的一种页面检测方法做进一步说明。
91.请参考图2,图2为本技术实施例所提供的另一种页面检测方法的流程图。
92.本实施例中,通过任务线程集群的方式对扫描到的待检测页面进行漏洞检测,并对每个待检测页面执行包括js检测、dom触发检测以及回调处理,该方法可以包括:
93.s201,将扫描到的待检测页面添加至任务队列中;
94.s202,任务线程集群中的任务线程按照顺序从任务队列中获取待检测页面;
95.s203,在虚拟运行环境对待检测网页进行动态检测,得到检测结果;其中,虚拟运行环境为根据浏览器接口构造的浏览器环境;其中,动态检测操作包括js检测、dom触发检测以及回调处理。
96.可见,本实施例中,在虚拟运行环境对待检测网页进行js检测、dom触发检测以及回调处理,最后得到对应的检测结果。
97.其中,每个浏览器对应的任务线程具有最大存活时间,避免浏览器处理大量任务内存泄漏,并且对于一些超时的任务有重试的最大次数。浏览器加载页面后,目标元素出现在页面上的等待时间太久会出现超时任务。
98.其中,通过任务线程的浏览器运行任务,最后生成由触发事件、单击javascript链接和捕获ajax请求生成的页面。由于浏览器有时可能会发生崩溃的情况,在运行每个工作任务之前或结束之后,检查确保浏览器是存活的。如果没有存活的,便及时重新启动新的浏览器环境。并且在运行过程中出现webdriver错误,也需要及时重新启动浏览器以保证检测过程的稳定性。
99.可见,本实施例通过在虚拟运行环境中对该待检测网页进行动态检测,其中该虚拟运行换件为根据浏览器接口构造的浏览器环境,也就是将待检测页面运行在虚拟出的浏
览器中,并进行动态检测,而不是仅仅对页面进行静态检测,实现了对各个动态表现例如js事件等进行检测,提高页面检测的覆盖率避免遗漏检测点,提高了页面检测的准确性。
100.下面对本技术实施例提供的页面检测装置进行介绍,下文描述的页面检测装置与上文描述的页面检测方法可相互对应参照。
101.请参考图3,图3为本技术实施例所提供的一种页面检测装置的结构示意图。
102.本实施例中,该装置可以包括:
103.页面获取模块100,用于获取待检测页面;
104.动态检测模块200,用于在虚拟运行环境对待检测网页进行动态检测,得到检测结果;其中,虚拟运行环境为根据浏览器接口构造的浏览器环境。
105.可选的,该动态检测模块200,具体用于在虚拟环境中对待检测网页执行动态检测操作,得到检测结果;其中,动态检测操作至少包括js检测、dom触发检测以及回调处理中的一种或多种的组合。
106.可选的,该动态检测模块200,具体用于在虚拟环境中加载待检测网页,并对待检测网页注入目标js代码;对目标js代码进行漏洞跟踪,得到跟踪结果并作为检测结果。
107.可选的,该动态检测模块200,具体用于在虚拟环境中加载待检测网页,并对待检测网页中的每个事件进行触发,得到每个事件下的页面快照;对所有页面快照进行漏洞分析,得到检测结果。
108.可选的,该动态检测模块200,具体用于在虚拟环境中加载待检测网页,并在待检测网页的末尾添加钩子;当钩子触发时,通过回调函数对待检测网页的日志报告进行漏洞分析,得到检测结果。
109.可选的,该页面获取模块100,具体用于将扫描得到的待检测页面添加至任务队列中;任务线程集群中的任务线程按照顺序从任务队列中获取待检测页面。
110.可选的,该装置还可以包括:
111.维护模块,用于当动态检测结束后,任务线程判断浏览器环境是否存活;若否,重启浏览器环境。
112.本技术实施例还提供一种服务器,包括:
113.存储器,用于存储计算机程序;
114.处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述的页面检测方法的步骤。
115.本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的页面检测方法的步骤。
116.说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
117.专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些
功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
118.结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd

rom、或技术领域内所公知的任意其它形式的存储介质中。
119.以上对本技术所提供的一种页面检测方法、页面检测装置、服务器以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术权利要求的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1