具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
浏览器需要将用户所要访问或其可能访问网页的网址信息,发送至过滤模块;其中,该网址信息包括浏览网页的网址、浏览网页网址中的部分内容、用户收藏夹的网址、收藏夹中网址的部分内容等,以下将其统称为网址信息URL。
现有的浏览器提供了获取URL的refer信息的接口,即get_refer接口。但是,通过get_refer接口所获取的refer信息仅包含在访问当前页面之前上一次所访问的页面的URL,即链接到当前页面的前一级页面的URL;并且,从一个页面打开至get_refer接口可以使用需要较长的时间,如果等到get_refer接口可以使用后再去进行检测所需花费的时间过长。为了能够实时获取由各级页面的URL组成的refer链,本发明提供了创建refer链的方法,该方法具体为:每当通过初始页面的各级链接打开新页面时,负责维护refer链的进程获取新页面的页面ID和URL以及新页面的上一级页面的页面ID或URL,如果新页面是通过上一级页面的子框架页面而访问的,还需获取上一级页面的子框架页面的URL;根据该上一级页面的页面ID或URL查询对应的refer链,创建refer链的对应节点。
通常,在用户打开浏览器后,浏览器访问默认的初始页面或者通过用户在地址栏的输入触发初始页面的访问请求,通过用户在初始页面上触发链接或者其它链接方式由初始页面链接到第2级页面,通过用户在第2级页面上点击链接或者其它链接方式由第2级页面链接到第3级页面,依此类推,最后由第i-1级页面链接到第i级页面。举例来说,用户打开浏览器后在地址栏输入www.so.com,该页面就是初始页面(下面用A来表示其URL);然后,用户在搜索栏输入“话费充值”,点击搜索按钮,浏览器会跳到http://www.so.com/s?ie=utf-8&src=360sou_home&q=%E8%AF%9D%E8%B4%B9%E5%85%85%E5%80%BC,该页面为第2级页面(下面用B来表示其URL);第2级页面提供了很多链接,用户点击其中一个链接,浏览器会跳到此链接对应的页面http://chongzhi.360.cn/mobile/,该页面为第3级页面(下面用C来表示其URL);用户在第3级页面上点击“网游点卡”链接,浏览器会跳到http://chongzhi.360.cn/GameCard/index,该页面为第4级页面(下面用D来表示其URL)。对于当前用户正在访问的页面,其refer信息为该当前页面的父页面的URL,即链接到该当前页面的前一级页面的URL。本发明根据链接到当前页面的若干级页面的URL得到refer链,该refer链可用于对网页访问行为进行处理。
图1示出了根据本发明一个实施例的refer链的创建方法的流程图,如图1所示,该方法包括如下步骤:
步骤S101,在监控到初始页面的访问请求后,生成初始页面的页面ID,获取初始页面的URL,创建refer链的第1级节点,将初始页面的页面ID和URL作为第1级节点的信息写入refer链。
针对浏览器访问的默认页面或通过用户在地址栏的输入触发访问的页面,将其作为初始页面,创建一个新的refer链。具体地,浏览器监控到初始页面的访问请求后,会加载该初始页面。在加载初始页面的过程中,浏览器生成一个唯一的ID作为该初始页面的页面ID,并且获取初始页面的URL。其中初始页面的URL可通过指定响应事件接口来获取,例如通过实现标准插件机制的指定响应事件接口来获取。
在IE(Internet Explorer)浏览器中使用浏览器辅助对象(Browser HelperObject,简称:BHO)插件机制,通过响应“BeforeNavigate2”事件可以获取IE当前加载的URL。在火狐(Firefox)浏览器中使用火狐扩展机制提供的指定响应事件接口,获取火狐浏览器当前加载的URL。在谷歌(chrome)浏览器中使用网景插件应用程序编程接口(NetscapePlugin Application Programming Interface,简称:NPAPI)插件机制,获取谷歌浏览器当前加载的URL。在获取初始页面的页面ID(如ID1)和URL(如A)后,将ID1和A作为该refer链的第1级节点的信息,创建refer链为:A(ID1)。其中,ID1为索引信息。
需要说明的是,由于实际应用中,人们使用计算机的应用环境,如操作系统、浏览器类型等的不尽相同,因此,前述各个步骤的执行主体也可以有多种实现方式。例如可以是一种带有识别及添加标记功能的浏览器,其中,浏览器可以是Windows操作系统自带的浏览器Internet Explorer(简称IE),以及其他第三方浏览器。所谓第三方浏览器,通常指在Windows操作系统上运行的非IE的浏览器软件,这类第三方浏览器通常会因其有着针对用户的丰富的独特功能设计和个性化扩展,为用户提供了许多方便的应用。例如,同样的插件机制可以运行于多种类型的浏览器,例如,浏览器为IE、firefox、google chrome、safari、opera、QQ浏览器、遨游浏览器、搜狗浏览器或猎豹浏览器等等。
步骤S102,在监控到第i级页面的访问请求后,i≥2,生成第i级页面的页面ID,获取第i级页面的URL以及第i-1级页面的页面ID或URL;如果第i级页面是通过第i-1级页面的子框架页面而访问的,获取第i-1级页面的子框架页面的URL。
第i级页面是第i-1级页面的页面级跳转页面。在浏览器监控到经过页面级跳转的第i级页面的访问请求后,会加载第i级页面。在加载第i级页面的过程中,浏览器生成一个唯一的ID作为该第i级页面的页面ID,并且获取第i级页面的URL。其中第i级页面的URL可通过指定响应事件接口来获取,例如通过实现标准插件机制的指定响应事件接口来获取。具体方式可参见前面关于如何获取初始页面的URL的相关描述。
为了查找到相应的refer链并在其上继续创建节点,在步骤S102中还需要获取第i-1级页面的页面ID或URL。第i-1级页面ID可以通过如下方式获取:向第i级页面的接口对象写入在加载第i-1级页面的过程中所获取的第i-1级页面的页面ID;在加载第i级页面时,再从第i级页面的接口对象中读取第i-1级页面的页面ID。第i-1级页面的URL可以通过浏览器提供的get_locationURL接口获取。
如果监控到第i级页面是通过第i-1级页面的子框架页面而访问的,为在refer链中创建包含子框架页面URL信息的节点,步骤S102需要获取第i-1级页面中该子框架页面的URL。
本发明针对浏览器通过子框架页面访问新页面的不同情况提供了四种不同的方式来获取该子框架页面的URL信息,其中,方式一适用于通过子框架页面访问新页面时不新开标签页的情况,即在与子框架页面同一个标签页下打开新页面的情况;方式二、方式三适用于通过子框架页面访问新页面时打开新窗口或标签页的情况,即在与子框架页面不同的标签页或不同的窗口下打开新页面的情况;方式四适用于通过输入设备手动触发子框架中的标签导致页面跳转的情况。
方式一:
首先,在监控到第i级页面的访问请求之后并且在加载第i级页面之前,将在加载第i-1级页面的过程中所获取的第i-1级页面的子框架页面的URL写入第i-1级页面的子框架页面的接口对象中。然后,在通过与第i-1级页面相同的标签页中加载第i级页面的过程中,在第i-1级页面的子框架页面的接口对象中读取第i-1级页面的子框架页面的URL。
以IE浏览器为例,在HTML页面中,子框架页面可以通过iframe标签嵌入在第i-1级页面中,标签为<iframe src=“www.example.html”>,其中的src属性值指定了在该子框架页面中显示的文档的URL,即:www.example.html。在加载第i-1级页面时,同时也加载其中的子框架页面,浏览器响应子框架页面的BeforeNavigate2事件,能够获取该子框架的URL。然后,在第i级页面加载前,获取该子框架页面的IWEBBROWSER2对象指针。可以通过多种方法获取IWEBBROWSER2对象指针,一种方法是,通过分析加载子框架页面时调用的相关函数,捕获(hook)这些函数,获取返回值,例如,返回值是一个COM接口指针,则可以利用Queryinterface函数从该COM接口指针中查询得到IWEBBROWSER2对象指针,将该子框架页面的URL写入IWEBBROWSER2对象指针指向的IWEBBROWSER2对象中,这里IWEBBROWSER2对象是子框架页面的接口对象。
方式一中,第i级页面与第i-1级页面加载在同一标签页中,也即第i级页面与第i-1级页面的子框架页面加载在同一标签页中。IE浏览器在加载第i级页面的过程中,是通过调用页面的BeforeNavigate2事件指向要加载的第i级页面的URL。而在第i级页面的BeforeNavigate2事件前,第i级页面尚未加载,子框架页面的IWEBBROWSER2对象仍然记录有该子框架页面的URL,这时从第i-1级页面的子框架页面的IWEBBROWSER2接口对象中读取第i-1级页面的子框架页面的URL。
方式二:
在通过新建窗口或标签页加载第i级页面的过程中,捕获新建窗口或标签页的窗口接口和定位接口;根据新建窗口或标签页的窗口接口和定位接口与第i-1级页面的子框架页面的接口对象的对应关系,获取第i-1级页面的子框架页面的接口对象的指针;根据第i-1级页面的子框架页面的接口对象的指针,从第i-1级页面的子框架页面的接口对象中读取第i-1级页面的子框架页面的URL。
与方式一相同地,在加载第i级页面之前,将在加载第i-1级页面的过程中所获取的第i-1级页面的子框架页面的URL写入第i-1级页面的子框架页面的接口对象中。
方式二适用于通过子框架页面访问新页面时通过Javascript函数新建窗口或新开标签页的情况。在子框架页面中监控到第i级页面的访问请求之后,IE浏览器可以通过window.open(),window.navigate(),location.url等函数新建窗口或标签页,在新窗口或标签页中加载第i级页面。新窗口或标签页的URL通常作为函数的参数,例如,在window.open(′urla′)中,′urla′即是要在新窗口或标签页中加载的第i级页面的URL;而window.navigate(′page.html′)用于在新窗口或新标签页加载URL为′page.html′的文档。
浏览器通过comhook的方式捕获上述函数,具体地,在IE浏览器中,通过comhookIHTMLWINDOW接口来捕获window.open()和window.navigate()函数,通过comhookIHTMLLOCATION接口捕获location.url函数。由于IHTMLWINDOW接口指针和IHTMLLOCATION接口指针是从第i-1级页面的子框架页面的IWEBBROWSER2接口指针逐层查询(QueryInterface)获得的,因此这两个接口指针与第i-1级页面的子框架页面的IWEBBROWSER2接口指针具有对应关系。
捕获(comhook)IHTMLWINDOW接口和IHTMLLOCATION接口,对这两个接口进行挂钩处理。具体地,将这两个接口中指向window.open()、window.navigate()或location.url函数的指针调换为指向自定义的钩子函数(hook函数)的指针。在自定义的钩子函数中,根据IHTMLWINDOW接口和IHTMLLOCATION接口与第i-1级页面的子框架页面的IWEBBROWSER2接口指针的对应关系,获取第i-1级页面的子框架页面的IWEBBROWSER2接口指针;之后,根据第i-1级页面的子框架页面的接口对象的指针,从第i-1级页面的子框架页面的接口对象中读取第i-1级页面的子框架页面的URL。
方式三:
在通过新建窗口或标签页加载第i级页面的过程中,捕获提交表单时调用的相关函数,从相关函数的返回值中获取第i-1级页面的子框架页面的URL。
方式三适用于第i-1级页面中的子框架页面向第i级页面提交HTML表单,并在新窗口或新标签页中打开第i级页面的情况,第i级页面中显示对表单数据的处理结果。
子框架页面通过调用表单提交函数实现表单的提交,表单提交时需要指定必要的表单属性,例如,action属性指定了接收表单数据的页面的URL,在本发明中,即为第i级页面的URL;target属性指定了在何处打开action属性中指定的URL。方式三适用于<target=″_blank″>的情况,即在新窗口或新标签页中显示处理结果的情况。如果target属性指定在原标签页显示结果,则适用于方式一。
IE中提供相关的函数用于获取表单属性,例如,通过CFormElement::GetFormAction函数获取表单的action属性,CFormElement::GetFormTarget函数获取表单的target属性。捕获(hook)这两个函数,从而获取到第i级页面的URL。
IE中还可以通过一个Cmarkup类成员函数:Cmarkup::GetOriginalUrlContext,来获取提交表单的页面的URL,在本发明中,即对应于第i-1级页面的子框架页面的URL。捕获(hook)CElement::GetMarkupPtr函数获取Markup指针,进而捕获(hook)Cmarkup::GetOriginalUrlContext函数,就可以从其返回值中得到第i-1级页面的子框架页面的URL。
通过上述方法,对于接收了表单数据,并在新窗口或标签页加载的第i级页面的URL,确定了提交该表单的第i-1级页面中子框架页面的URL。
方式四:
监控设备触发消息,定位该设备在界面中触发的位置,获取该位置在第i-1级页面中对应的触发对象,查询该触发对象对应的子框架页面的接口对象,从接口对象中读取子框架页面的URL。
输入设备可以包括鼠标,笔记本触摸板,触摸屏等。可以通过多种方式实现对输入设备触发消息的监控和触发位置的获取,例如,对于鼠标,点击位置可以通过操作系统中提供的API函数完成,或者在页面代码中实现鼠标位置获取,例如javascript中有多种鼠标事件,通过处理鼠标事件获取鼠标位置信息。
根据输入设备的触发位置,获取该位置在第i-1级页面中对应的触发对象,查询该对象的href属性,href属性指定了该标签链接的目标URL,在本发明中,该目标URL就是第i级页面的URL。
获取该触发对象对应的子框架页面的IWEBBROWSER2接口对象,从该IWEBBROWSER2接口对象中读取该子框架页面的URL。其中,该子框架页面的URL是在加载第i-1级页面时,通过第i-1级页面中子框架页面的BeforeNavigate2事件获取,并在加载第i级页面之前写入该子框架页面的IWEBBROWSER2接口对象中的。
步骤S103,查询包含第i-1级页面的页面ID或URL的refer链,创建该refer链的第j级节点和第j+1级节点,j≥i-1,将第i-1级页面的页面ID和第i-1级页面的子框架页面的URL作为第j级节点的信息,将第i级页面的页面ID和URL作为第j+1级节点的信息。
第i-1级页面中的子框架页面与该第i-1级页面具有相同的页面ID。如同在步骤S102中所描述的,第i-1级页面ID可以通过如下方式获取:向第i级页面的接口对象写入在加载第i-1级页面的过程中所获取的第i-1级页面的页面ID;在加载第i级页面时,再从第i级页面的接口对象中读取第i-1级页面的页面ID。
下面通过具体事例说明refer链的创建过程。假设当前第i-1级页面的ID为ID4,相应的URL为D,用户从页面ID为ID1,URL为A的初始页面经过3次页面级跳转访问了该第i-1级页面,即i=5。其中,第2,3级页面的ID分别为ID2,ID3;URL分别为B,C。如果这3次页面级跳转都是通过页面的主框架完成的,则可以建立出4个节点的refer链:A(ID1)->B(ID2)->C(ID3)->D(ID4)。
这时,用户通过第4级页面中的一个子框架页面访问了第5级页面,则该子框架页面也为ID4。首先获取所访问的第5级页面的ID和URL分别为ID5和E,然后根据步骤S102中描述的几种方式,获取第4级页面的子框架页面的URL为Dsub。则在本步骤中,查询包含第4级页面URL的refer链,建立refer链的第5级节点,将第4级页面中子框架页面的ID和URL,即ID4和Dsub写入该第5级节点中;而后,建立refer链的第6级节点,将第5级页面的ID和URL,即ID5和E,写入该第6级节点中。对于上述示例,创建的refer链为A(ID1)->B(ID2)->C(ID3)->D(ID4)->Dsub(ID4)->E(ID5)。
循环执行上述步骤S102和步骤S103,由此创建完整的refer链。
根据本发明提供的refer链的创建方法,在检测到新页面的访问请求后,获取该新页面以及上一级页面的页面ID和URL,如果该新页面是通过上一级页面的子框架访问的,获取上一级页面的子框架页面的URL,根据上一级页面的页面ID和子框架页面的URL查询对应的refer链,在这些refer链中创建新的节点,将上一级页面的页面ID和子框架页面的URL作为新节点的信息。根据该方案,创建的refer链中包含了子框架级的URL信息,因此,refer链中记录了更完整的访问行为,能够更有效地保护客户端的网页浏览安全。
本发明还提供了一种利用refer链进行安全检测的方法,其中将按上述refer链创建方法创建的refer链中包含的所有URL发送给服务器,以供服务器查询refer链所包含的所有URL是否属于服务器保存的黑名单和/或白名单数据库,然后将查询结果与预设的规则进行匹配得到匹配结果;然后,接收服务器返回的匹配结果,根据匹配结果对第i级页面的访问行为进行处理。
其中预设的规则是根据实际需求而设定的,其具体规定了需要进行风险提示的情况。下面以两种预设规则为例进行说明:
规则一:经过搜索引擎跳转到恶意页面或危险页面或未知页面
如果查询结果表明第i级页面的URL属于黑名单数据库,即第i级页面为恶意页面或危险页面;或者,第i级页面的URL不属于白名单数据库,即第i级页面为未知页面;并且判断出refer链第1级节点至第j级节点中任一节点包含的URL为搜索页面URL,即第i级页面是经过搜索引擎跳转而来的,表明查询结果与该规则一匹配,得到匹配结果为风险提示信息。
可选地,服务器还保存有搜索页面URL列表。本步骤中,判断refer链第1级节点至第j级节点中任一节点包含的URL是否属于搜索页面URL列表,若是,则判断出refer链第1级节点至第j级节点中存在至少一个节点,其中包含的URL为搜索页面URL。需要说明的是,判断搜索页面也可以采用其它方法,不仅限于这种方法。
规则二:经过恶意页面或危险页面或未知页面跳转到支付页面
如果查询结果表明refer链第1级节点至第j级节点中任一节点包含的URL属于黑名单数据库,即该页面为恶意页面或危险页面;或者,refer链第1级节点至第j级节点中任一节点包含的URL不属于白名单数据库,即该页面为未知页面;并且判断出第i级页面为支付页面,表明查询结果与该规则二匹配,得到匹配结果为风险提示信息。
可选地,服务器还保存有支付页面URL列表。本步骤中,判断第i级页面的URL是否属于支付页面URL列表,若是,则判断出第i级页面为支付页面。需要说明的是,判断支付页面也可以采用其它方法,不仅限于这种方法。
根据本发明实施例提供的利用refer链进行安全检测的方法,客户端将refer链包含的所有URL上报给服务器,由服务器根据这些URL检测出匹配结果,由客户端根据该匹配结果对新页面的访问行为进行处理。根据该方案,创建的refer链中不仅包含历史访问页面的URL信息,还包含了子框架级的URL信息,因此,refer链中记录了更完整的访问行为,即使某一历史访问页面中的子框架URL被篡改为恶意网站,该方法也能够检测出其中的安全隐患,从而更有效地保护客户端的网页浏览安全,检测效率更高。并且,服务器能够及时的向客户端返回匹配结果,从而实现了实时快速的保护客户端的网页浏览的安全性。
图2示出了根据本发明一个实施例的refer链的创建装置的结构框图,如图2所示,该装置包括:第一节点创建单元21和第二节点创建单元22。
第一节点创建单元21适于在监控到初始页面的访问请求后,生成初始页面的页面ID,获取初始页面的URL,创建refer链的第1级节点,将初始页面的页面ID和URL作为第1级节点的信息写入refer链。
进一步地,第一节点创建单元21包括:初始页面的页面ID生成单元211、初始页面的URL获取单元212和第一节点创建子单元213。初始页面的页面ID生成单元211适于在监控到初始页面的访问请求后,生成初始页面的页面ID。初始页面的URL获取单元212适于在加载初始页面的过程中,通过指定响应事件接口获取当前加载的初始页面的URL。例如,通过实现标准插件机制的指定响应事件接口来获取。在IE浏览器中使用浏览器辅助对象BHO插件机制,通过响应“BeforeNavigate2”事件可以获取IE当前加载的URL。在火狐(Firefox)浏览器中使用火狐扩展机制提供的指定响应事件接口,获取火狐浏览器当前加载的URL。在谷歌(chrome)浏览器中使用NPAPI插件机制,获取谷歌浏览器当前加载的URL。第一节点创建子单元213适于创建refer链的第1级节点,将初始页面的页面ID和URL作为第1级节点的信息写入refer链。
第二级节点创建单元22适于在监控到第i级页面的访问请求后,i≥2,生成第i级页面的页面ID,获取第i级页面的URL以及第i-1级页面的页面ID或URL;如果第i级页面是通过第i-1级页面的子框架页面而访问的,获取第i-1级页面的子框架页面的URL;以及,查询包含第i-1级页面的页面ID或URL的refer链,创建该refer链的第j级节点和第j+1级节点,j≥i-1,将第i-1级页面的页面ID和第i-1级页面的子框架页面的URL作为第j级节点的信息,将第i级页面的页面ID和URL作为第j+1级节点的信息。
进一步地,第二级节点创建单元22包括:第i级页面的页面ID生成单元221,第i级页面的URL获取单元222,第i-1级页面的页面ID或URL获取单元223,子框架页面URL获取单元224,第二节点创建子单元225。可选地,第二级节点创建单元22还包括:子框架页面URL写入单元226。
第i级页面的页面ID生成单元221适于在监控到第i级页面的访问请求后,生成第i级页面的页面ID。
第i级页面的URL获取单元222适于在加载第i级页面的过程中,通过指定响应事件接口获取当前加载的第i级页面的URL。
第i-1级页面的页面ID或URL获取单元223,适于在监控到第i级页面的访问请求后,获取第i-1级页面的页面ID或URL。
子框架页面URL获取单元224,适于在第i级页面是通过第i-1级页面的子框架页面而访问的情况下,获取第i-1级页面的子框架页面的URL。
子框架页面URL写入单元226,适于在加载第i-1级页面的过程中将所获取的第i-1级页面的子框架页面的URL写入第i-1级页面的子框架页面的接口对象中。
子框架页面URL获取单元224进一步适于:在通过与第i-1级页面相同的标签页中加载第i级页面的过程中,在第i-1级页面的子框架页面的接口对象中读取第i-1级页面的子框架页面的URL。
子框架页面URL获取单元224还适于:在通过新建窗口或标签页加载第i级页面的过程中,捕获新建窗口或标签页的窗口接口和定位接口;根据新建窗口或标签页的窗口接口和定位接口与第i-1级页面的子框架页面的接口对象的对应关系,获取第i-1级页面的子框架页面的接口对象的指针;根据第i-1级页面的子框架页面的接口对象的指针,从第i-1级页面的子框架页面的接口对象中读取第i-1级页面的子框架页面的URL。
子框架页面URL获取单元224还适于:在通过新建窗口或标签页加载第i级页面的过程中,捕获提交表单时调用的相关函数;从相关函数的返回值中获取第i-1级页面的子框架页面的URL。
子框架页面URL获取单元224还适于:监控输入设备触发消息,定位该输入设备在界面中触发的位置,获取该位置在第i-1级页面中对应的触发对象,查询该触发对象对应的子框架页面的接口对象,从接口对象中读取子框架页面的URL。
第二节点创建子单元225,适于查询包含第i-1级页面的页面ID或URL的refer链,创建该refer链的第j级节点和第j+1级节点,j≥i-1,将第i-1级页面的页面ID和第i-1级页面的子框架页面的URL作为第j级节点的信息,将第i级页面的页面ID和URL作为第j+1级节点的信息。
本发明实施例还提供了一种包括refer链的创建装置的安全检测客户端,该客户端还包括:查询接口11,适于将refer链所包含的所有URL发送给服务器,以供服务器查询refer链所包含的所有URL是否属于服务器保存的黑名单和/或白名单数据库,然后将查询结果与预设的规则进行匹配得到匹配结果;以及,接收服务器返回的匹配结果。
其中,服务器包括:黑名单和/或白名单数据库32和查询接口34。黑名单和/或白名单数据库32适于保存属于黑名单和/或白名单的URL。服务器预先收集已识别的安全网页和危险/恶意网页,将安全网页的URL保存在白名单数据库中,将危险/恶意网页的URL保存在黑名单数据库中。可选地,黑名单和/或白名单数据库32中存储的也可以是URL的特征值。
优选的,本发明实施例中的黑名单和/或白名单数据库32可以包括但不限于钓鱼网址库,广告欺诈网址库,或其他任何类型的恶意网址库等。
进一步的,服务器还可以包括:搜索页面URL数据库31,适于保存搜索页面URL列表;支付页面URL数据库33,适于保存支付页面URL列表。
可选地,黑名单和/或白名单数据库也可以直接设置在客户端。如图3所示,客户端查询接口11获得refer链后,直接在本地黑名单和/或白名单数据库12中查询refer链所包含的所有URL是否属于服务器保存的黑名单和/或白名单数据库。
根据本发明提供的refer链的创建装置和安全检测客户端,refer链创建装置在检测到新页面的访问请求后,获取该新页面以及上一级页面的页面ID和URL,如果该新页面是通过上一级页面的子框架访问的,子框架页面URL获取单元224获取上一级页面的子框架页面的URL,然后第二节点创建子单元225根据上一级页面的页面ID和子框架页面的URL查询对应的refer链,在这些refer链中创建新的节点,并将上一级页面的页面ID和子框架页面的URL作为新节点的信息。然后,客户端通过查询接口将refer链包含的所有URL上报给服务器,由服务器根据这些URL检测出匹配结果,由客户端根据该匹配结果对新页面的访问行为进行处理。根据该方案,创建的refer链中不仅包含历史访问页面的URL信息,还包含了子框架级的URL信息,因此,refer链中记录了更完整的访问行为,即使某一历史访问页面中的子框架URL被篡改为恶意网站,该方法也能够检测出其中的安全隐患,从而更有效地保护客户端的网页浏览安全,检测效率更高。并且,服务器能够及时的向客户端返回匹配结果,从而实现了实时快速的保护客户端的网页浏览的安全性。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的一种refer链的创建装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
A1、一种refer链的创建方法,包括:
在监控到初始页面的访问请求后,生成初始页面的页面ID,获取初始页面的URL,创建refer链的第1级节点,将所述初始页面的页面ID和URL作为第1级节点的信息写入refer链;
在监控到第i级页面的访问请求后,i≥2,生成第i级页面的页面ID,获取第i级页面的URL以及第i-1级页面的页面ID或URL;如果所述第i级页面是通过第i-1级页面的子框架页面而访问的,获取所述第i-1级页面的子框架页面的URL;以及,查询包含所述第i-1级页面的页面ID或URL的refer链,创建该refer链的第j级节点和第j+1级节点,j≥i-1,将所述第i-1级页面的页面ID和所述第i-1级页面的子框架页面的URL作为第j级节点的信息,将所述第i级页面的页面ID和URL作为第j+1级节点的信息。
A2、根据A1所述的方法,所述在监控到初始页面的访问请求后,获取初始页面的URL具体为:
在加载初始页面的过程中,通过指定响应事件接口获取当前加载的初始页面的URL。
A3、根据A1所述的方法,所述在监控到第i级页面的访问请求后,获取第i级页面的URL包括:
在加载第i级页面的过程中,通过指定响应事件接口获取当前加载的第i级页面的URL。
A4、根据A1或A2或A3所述的方法,在所述监控到第i级页面的访问请求之后并且在加载第i级页面之前,还包括:在加载第i-1级页面的过程中所获取的第i-1级页面的子框架页面的URL写入第i-1级页面的子框架页面的接口对象中。
A5、根据A4所述的方法,所述获取第i-1级页面的子框架页面的URL包括:
在通过与第i-1级页面相同的标签页中加载所述第i级页面的过程中,在所述第i-1级页面的子框架页面的接口对象中读取所述第i-1级页面的子框架页面的URL。
A6、根据A4所述的方法,所述获取第i-1级页面的子框架页面的URL包括:
在通过新建窗口或标签页加载所述第i级页面的过程中,捕获所述新建窗口或标签页的窗口接口和定位接口;
根据所述新建窗口或标签页的窗口接口和定位接口与所述第i-1级页面的子框架页面的接口对象的对应关系,获取所述第i-1级页面的子框架页面的接口对象的指针;
根据所述第i-1级页面的子框架页面的接口对象的指针,从所述第i-1级页面的子框架页面的接口对象中读取所述第i-1级页面的子框架页面的URL。
A7、根据A1或A2或A3所述的方法,所述获取第i-1级页面的子框架页面的URL包括:
在通过新建窗口或标签页加载所述第i级页面的过程中,捕获提交表单时调用的相关函数,从所述相关函数的返回值中获取所述第i-1级页面的子框架页面的URL。
8、根据权利要求A4所述的方法,所述获取第i-1级页面的子框架页面的URL包括:
监控输入设备触发消息,定位该输入设备在界面中触发的位置,获取该位置在第i-1级页面中对应的触发对象,查询所述触发对象对应的子框架页面的接口对象,从所述接口对象中读取子框架页面的URL。
B9、一种A1-A8中任一项所述的方法创建的refer链进行安全检测的方法,包括:
将所述refer链所包含的所有URL发送给服务器,以供所述服务器查询所述refer链所包含的所有URL是否属于服务器保存的黑名单和/或白名单数据库,然后将查询结果与预设的规则进行匹配得到匹配结果;
接收服务器返回的匹配结果,根据所述匹配结果对所述第i级页面的访问行为进行处理。
B10、根据B9所述的方法,所述将查询结果与预设的规则进行匹配得到匹配结果进一步包括:
如果查询结果表明第i级页面的URL属于黑名单数据库或不属于白名单数据库,并且判断出refer链第1级节点至第j级节点中任一节点包含的URL为搜索页面URL,则得到匹配结果为风险提示信息;
或者,如果查询结果表明第1级节点至第j级节点中任一节点包含的URL属于黑名单数据库或不属于白名单数据库,并且判断出第i级页面为支付页面,则得到匹配结果为风险提示信息。
B11、根据B9或B10所述的方法,如果所述匹配结果为风险提示信息,则所述根据所述匹配结果对所述第i级页面的访问行为进行处理具体包括:根据所述风险提示信息向用户提示风险,并根据用户的选择对所述第i级页面的访问行为进行拦截。
C12、一种refer链的创建装置,包括:
第一节点创建单元,适于在监控到初始页面的访问请求后,生成初始页面的页面ID,获取初始页面的URL,创建refer链的第1级节点,将所述初始页面的页面ID和URL作为第1级节点的信息写入refer链;
第二节点创建单元,适于在监控到第i级页面的访问请求后,i≥2,生成第i级页面的页面ID,获取第i级页面的URL以及第i-1级页面的页面ID或URL;如果所述第i级页面是通过第i-1级页面的子框架页面而访问的,获取所述第i-1级页面的子框架页面的URL;以及,查询包含所述第i-1级页面的页面ID或URL的refer链,创建该refer链的第j级节点和第j+1级节点,j≥i-1,将所述第i-1级页面的页面ID和所述第i-1级页面的子框架页面的URL作为第j级节点的信息,将所述第i级页面的页面ID和URL作为第j+1级节点的信息。
C13、根据C12所述的装置,所述第一节点创建单元包括:
初始页面的页面ID生成单元,适于在监控到初始页面的访问请求后,生成初始页面的页面ID;
初始页面的URL获取单元,适于在加载初始页面的过程中,通过指定响应事件接口获取当前加载的初始页面的URL;
第一节点创建子单元,适于创建refer链的第1级节点,将所述初始页面的页面ID和URL作为第1级节点的信息写入refer链。
C14、根据C12所述的装置,所述第二节点创建单元包括:
第i级页面的页面ID生成单元,适于在监控到第i级页面的访问请求后,生成第i级页面的页面ID,i≥2;
第i级页面的URL获取单元,适于在加载第i级页面的过程中,通过指定响应事件接口获取当前加载的第i级页面的URL;
第i-1级页面的页面ID或URL获取单元,适于在监控到第i级页面的访问请求后,获取第i-1级页面的页面ID或URL;
子框架页面URL获取单元,适于在所述第i级页面是通过第i-1级页面的子框架页面而访问的情况下,获取所述第i-1级页面的子框架页面的URL;
第二节点创建子单元,适于查询包含所述第i-1级页面的页面ID或URL的refer链,创建该refer链的第j级节点和第j+1级节点,j≥i-1,将所述第i-1级页面的页面ID和所述第i-1级页面的子框架页面的URL作为第j级节点的信息,将所述第i级页面的页面ID和URL作为第j+1级节点的信息。
C15、根据C14所述的装置,还包括:
子框架页面URL写入单元,适于在加载第i-1级页面的过程中将所获取的第i-1级页面的子框架页面的URL写入第i-1级页面的子框架页面的接口对象中。
C16、根据C15所述的装置,所述子框架页面URL获取单元具体适于:在通过与第i-1级页面相同的标签页中加载所述第i级页面的过程中,在所述第i-1级页面的子框架页面的接口对象中读取所述第i-1级页面的子框架页面的URL。
C17、根据C15所述的装置,所述子框架页面URL获取单元具体适于:在通过新建窗口或标签页加载所述第i级页面的过程中,捕获所述新建窗口或标签页的窗口接口和定位接口;根据所述新建窗口或标签页的窗口接口和定位接口与所述第i-1级页面的子框架页面的接口对象的对应关系,获取所述第i-1级页面的子框架页面的接口对象的指针;根据所述第i-1级页面的子框架页面的接口对象的指针,从所述第i-1级页面的子框架页面的接口对象中读取所述第i-1级页面的子框架页面的URL。
C18、根据C14所述的装置,所述子框架页面URL获取单元具体适于:在通过新建窗口或标签页加载所述第i级页面的过程中,捕获提交表单时调用的相关函数;从所述相关函数的返回值中获取所述第i-1级页面的子框架页面的URL。
C19、根据C15所述的装置,所述子框架页面URL获取单元具体适于:监控输入设备触发消息,定位该输入设备在界面中触发的位置,获取该位置在第i-1级页面中对应的触发对象,查询所述触发对象对应的子框架页面的接口对象,从所述接口对象中读取子框架页面的URL。
D20、一种包括C12-C19中任一项所述的refer链创建装置的安全检测客户端,其特征在于,还包括:查询接口,适于将refer链所包含的所有URL发送给服务器,以供服务器查询refer链所包含的所有URL是否属于服务器保存的黑名单和/或白名单数据库,然后将查询结果与预设的规则进行匹配得到匹配结果;以及,接收服务器返回的匹配结果。