检测HTTP响应头的方法、系统、装置及可读存储介质与流程

文档序号:19729870发布日期:2020-01-18 03:49阅读:323来源:国知局
检测HTTP响应头的方法、系统、装置及可读存储介质与流程

本发明涉及网络安全技术领域,尤其涉及一种检测http响应头的方法、系统、装置及计算机可读存储介质。



背景技术:

在web通信中,客户端发送请求信息至服务端后,服务端将会返回相应的http(hypertexttransferprotocol,超文本传输协议)响应至客户端,http响应包括状态行、若干响应头及实体内容。其中,http响应头包括hsts(httpstricttransportsecurity,http严格传输安全)头、x-frame-options(x框架,选项)头、x-xss-protection(x-xss保护)头、x-content-type-options(x-content-type的选项)头、content-security-policy(内容安全策略)头、referrer-policy(引用策略)头及content-type(内容类型)头等。

其中,hsts是一个安全功能,hsts会告知浏览器只能通过https访问当前资源,而禁止http方式;由于http请求中的数据是以明文进行传输,该方式会存在被攻击者获取重要信息、甚至信息被篡改的风险。x-frame-options是用来指示浏览器允许一个页面可否在<frame>、<iframe>或者<object>中展现的标记;若x-frame-options为不安全的响应头,则会存在点击劫持(clickjacking)的风险。x-xss-protection用于在检测到跨站脚本攻击(xss)时,使浏览器停止加载页面;若x-xss-protection为不安全的响应头,则会存在反射跨站点脚本攻击(xss)的风险。x-content-type-options相当于一个提示标志,被服务端用来提示客户端一定要遵循在content-type首部中对mime(multipurposeinternetmailextensions,多用途互联网邮件扩展类型)类型的设定,而不能对其进行修改,以禁用客户端的mime类型嗅探行为,防止出现基于mime类型混淆的攻击,从而确保用户端上传/下载文件的安全性。content-security-policy用于指示允许站点管理者控制用户代理能够为指定的页面加载哪些资源,以防止跨站脚本攻击。referrer-policy用于监管访问来源信息,如果未设置安全的referrer-policy,用户的隐私可能会受到侵犯,甚至存在第三方网站收集用户的信息的风险。content-type用于在响应中告知客户端实际返回的内容的内容类型,当攻击者结合跨站点脚本攻击时,应用程序则会受到mime混淆攻击。

现阶段,主要通过利用抓包工具来抓取响应头,再通过人为分析http响应头,从而检测出响应头中是否存在相应的hsts字段/x-frame-options字段/x-xss-protection字段/x-content-type-options字段/content-security-policy字段/referrer-policy字段/content-type字段,或者响应头中相应的字段是否安全。该方式存在操作复杂,分析速度慢、准确率低、耗费人力成本和时间成本高等缺陷。



技术实现要素:

本发明的目的在于提供一种检测http响应头的方法、系统、装置及计算机可读存储,以快速、准确地对http响应头进行检测。

为实现上述目的,本发明提供了一种检测http响应头的方法,包括以下步骤:

(1)通过java代理拦截服务端的处理请求程序所对应的java类文件,并由所述java类文件中获取插桩入口;

(2)将检测字节码注入所述插桩入口;

(3)将注入所述检测字节码的所述java类文件返回至服务端;

(4)获取服务端返回给客户端的响应数据;

(5)通过java反射获取所述响应数据中的http响应头,以判断所述http响应头是否为安全的http响应头。

较佳地,步骤(5)中的“判断所述http响应头是否为安全的http响应头”具体为:判断所述http响应头中是否存在特定的响应头字段;获取所述响应头字段的value值;根据所述value值判断所述http响应头是否为安全的http响应头。

较佳地,所述http响应头包括hsts响应头、x-frame-options响应头、x-xss-protection响应头、x-content-type-options响应头、content-security-policy响应头、referrer-policy响应头及content-type响应头中的至少一者。

较佳地,在步骤(1)之前,还包括:在服务端的启动参数中配置java代理参数。

为实现上述目的,本发明还提供了一种检测http响应头的系统,包括拦截与获取模块、字节码注入模块、返回模块、响应获取模块以及获取与判断模块,所述拦截与获取模块用于通过java代理拦截服务端的处理请求程序所对应的java类文件,并由所述java类文件中获取插桩入口;所述字节码注入模块用于将检测字节码注入所述插桩入口;所述返回模块用于将注入所述检测字节码的所述java类文件返回至服务端;所述响应获取模块用于获取服务端返回给客户端的响应数据;所述获取与判断模块用于通过java反射获取所述响应数据中的http响应头,判断所述http响应头是否为安全的http响应头。

较佳地,所述获取与判断模块“判断所述http响应头是否为安全的http响应头”具体为:通过第一判断单元判断所述http响应头中是否存在特定的响应头字段;通过获取单元获取所述响应头字段的value值;通过第二判断单元根据所述value值判断所述http响应头是否为安全的http响应头。

较佳地,所述http响应头包括hsts响应头、x-frame-options响应头、x-xss-protection响应头、x-content-type-options响应头、content-security-policy响应头、referrer-policy响应头及content-type响应头中的至少一者。

较佳地,所述检测http响应头的系统还包括配置模块,所述配置模块用于在服务端的启动参数中配置java代理参数。

为实现上述目的,本发明还提供了一种检测http响应头的装置,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时,执行如上所述的检测http响应头的方法。

为实现上述目的,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序可被处理器执行以完成如上所述的检测http响应头的方法。

与现有技术相比,本发明是基于java字节码插桩技术在服务端将响应数据返回客户端的时候获取http响应数据,然后再利用java反射获取http响应数据中的http响应头,从而对http响应头是否存在特定的响应头及响应头是否安全进行判断。本发明是根据用户实际的代码环境进行判断,不仅能够有效地判断服务端的响应数据中是否缺少特定的http响应头或者该http响应头是否为不安全的响应头,大大提高了检测结果的准确性,避免了通过人为分析而导致的操作复杂、检测速率低、准确率低、实时性差及成本高的问题。此外,本发明的该种检测方式全程对开发及测试人员无感知,也无需担心有脏数据的产生,不会对服务端的性能造成不良的影响。

附图说明

图1为本发明检测http响应头的方法一实施例的流程图。

图2为本发明检测http响应头的系统一实施例的结构框图。

图3为本发明获取与判断模块一实施例的结构框图。

图4为本发明检测http响应头的装置一实施例的结构框图。

具体实施方式

为了详细说明本发明的技术内容、构造特征,以下结合具体实施方式并配合附图作进一步说明。

请参阅图1,本发明检测http响应头的方法包括以下步骤:

(1)通过java代理拦截服务端的处理请求程序所对应的java类文件,并由java类文件中获取插桩入口;

(2)将检测字节码注入插桩入口;

(3)将注入检测字节码的java类文件返回至服务端;

(4)获取服务端返回给客户端的响应数据;

(5)通过java反射获取响应数据中的http响应头,以判断http响应头是否为安全的http响应头。

对本发明检测http响应头的方法的检测过程说明如下:当客户端向服务端发送http请求信息时,服务端接收客户端的请求信息,此后,该请求信息便会进入服务端的处理请求程序中,然后,java代理在处理请求程序被加载成java类文件之后dex文件之前拦截该处理请求程序,并由该处理请求程序所对应的java类文件中获取到插桩入口,然后将检测字节码注入插桩入口;接着,将注入有检测字节码的java类文件返回至服务端;之后,服务端将会运行注入有检测字节码的java类文件(即处理请求程序),当服务端运行完处理请求程序时,服务端会返回相应的响应数据给客户端,此时,便可以获取到服务端返回给客户端的响应数据,然后再通过java反射机制从响应数据中获取到http响应头。在本实施例中,是在处理请求程序的最后一行中插入检测字节码,当服务端的处理请求程序快结束的时候就会运行检测字节码。

在本实施例中,步骤(5)中的“判断http响应头是否为安全的http响应头”具体为:判断http响应头中是否存在特定的响应头字段;若http响应头中不存在特定的响应头字段,则认为该响应数据中缺乏特定的响应头,若http响应头中存在特定的响应头字段,则进一步获取响应头字段的value值;然后根据value值判断http响应头是否为安全的http响应头。

其中,文中所述“特定的响应头字段”指的是欲检测的某一种或多种响应头中的代表字段。

在本实施例中,http响应头包括hsts响应头、x-frame-options响应头、x-xss-protection响应头、x-content-type-options响应头、content-security-policy响应头、referrer-policy响应头及content-type响应头中的至少一者。举例而言,若步骤(5)中获取到的http响应头中不存在hsts响应字段,则认为该响应数据中缺乏hsts响应头,若http响应头中存在hsts响应头字段,则进一步获取hsts响应字段的value值,然后根据value值判断hsts响应头是否为安全的hsts响应头。若步骤(5)中获取到的http响应头中不存在x-content-type-options响应字段,则认为该响应数据中缺乏x-content-type-options响应头,若http响应头中存在x-content-type-options响应字段,则进一步获取x-content-type-options响应字段的value值,然后根据value值判断x-content-type-options响应头是否为安全的x-content-type-options响应头。

在本实施例中,“根据value值判断http响应头是否为安全的http响应头”具体为:若value值不等于nosniff,判定http响应头为不安全的http响应头,若value值等于nosniff,判定该http响应头为安全的http响应头;当然,具体实施中不以此为限制。

在本实施例中,在步骤(1)之前,还包括:在服务端的启动参数中配置java代理参数。借此,来设置代理类,以检测运行程序。

请参阅图2,本发明还提供一种检测http响应头的系统100,其包括拦截与获取模块10、字节码注入模块20、返回模块30、响应获取模块40以及获取与判断模块50,拦截与获取模块10用于通过java代理拦截服务端的处理请求程序所对应的java类文件,并由java类文件中获取插桩入口;字节码注入模块20用于将检测字节码注入插桩入口;返回模块30用于将注入检测字节码的java类文件返回至服务端;响应获取模块40用于获取服务端返回给客户端的响应数据;获取与判断模块50用于通过java反射获取响应数据中的http响应头,并判断http响应头是否为安全的http响应头。

对本发明检测http响应头的系统100的检测过程说明如下:当客户端向服务端发送http请求信息时,服务端接收客户端的请求信息,此后,该请求信息便会进入服务端的处理请求程序中,然后,拦截与获取模块10通过java代理在处理请求程序被加载成java类文件之后dex文件之前拦截该处理请求程序,并由该处理请求程序所对应的java类文件中获取到插桩入口,然后通过字节码注入模块20将检测字节码注入插桩入口;接着,通过返回模块30将注入有检测字节码的java类文件返回至服务端;之后,服务端将会运行注入有检测字节码的java类文件(即处理请求程序),当服务端运行完处理请求程序时,服务端会返回相应的响应数据给客户端,此时,响应获取模块40便可以获取到服务端返回给客户端的响应数据,然后再利用获取与判断模块50通过java反射机制从响应数据中获取http响应头。在本实施例中,是在处理请求程序的最后一行中插入检测字节码,当服务端的处理请求程序快结束的时候就会运行检测字节码。

请参阅图3,在本实施例中,获取与判断模块50包括第一判断单元510、获取单元520及第二判断单元530,“判断http响应头是否为安全的http响应头”具体为:通过第一判断单元510判断http响应头中是否存在特定的响应头字段,若http响应头中不存在特定的响应头字段,则认为该响应数据中缺乏特定的响应头;若http响应头中存在特定的响应头字段,则进一步通过获取单元520获取响应头字段的value值;然后通过第二判断单元530根据value值判断http响应头是否为安全的http响应头。

在本实施例中,http响应头包括hsts响应头、x-frame-options响应头、x-xss-protection响应头、x-content-type-options响应头、content-security-policy响应头、referrer-policy响应头及content-type响应头中的至少一者。举例而言,若获取与判断模块50获取到的http响应头中不存在hsts响应字段,则认为该响应数据中缺乏hsts响应头,若http响应头中存在hsts响应头字段,则进一步获取hsts响应字段的value值,然后根据value值判断hsts响应头是否为安全的hsts响应头。若获取与判断模块50中获取到的http响应头中不存在x-content-type-options响应字段,则认为该响应数据中缺乏x-content-type-options响应头,若http响应头中存在x-content-type-options响应字段,则进一步获取x-content-type-options响应字段的value值,然后根据value值判断x-content-type-options响应头是否为安全的x-content-type-options响应头。

在本实施例中,检测http响应头的系统100还包括配置模块60,配置模块60用于在服务端的启动参数中配置java代理参数。借此,来设置代理类,以检测运行程序。

请参阅图4,本发明还公开一种检测http响应头的装置200,其包括处理器210、存储器220以及存储在存储器220中且被配置为由处理器210执行的计算机程序230,处理器210执行计算机程序230时,执行上述的检测http响应头的方法。

与现有技术相比,本发明是基于java字节码插桩技术在服务端将响应数据返回客户端的时候获取http响应数据,然后再利用java反射获取http响应数据中的http响应头,从而对http响应头中是否存在特定的响应头及响应头是否安全进行判断。本发明是根据用户实际的代码环境进行判断,不仅能够有效地判断服务端的响应数据中是否缺少特定的http响应头或者该http响应头是否为不安全的响应头,大大提高了检测结果的准确性,避免了通过人为分析而导致的操作复杂、检测速率低、准确率低、实时性差及成本高的问题。此外,本发明的该种检测方式全程对开发及测试人员无感知,也无需担心有脏数据的产生,不会对服务端的性能造成不良的影响。

以上结合最佳实施例对本发明进行了描述,但本发明并不局限于以上揭示的实施例,而应当涵盖各种根据本发明的本质进行的修改、等效组合。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1