CN108702361A - 应用树图属性的json数据的实时验证 - Google Patents
应用树图属性的json数据的实时验证 Download PDFInfo
- Publication number
- CN108702361A CN108702361A CN201780012338.0A CN201780012338A CN108702361A CN 108702361 A CN108702361 A CN 108702361A CN 201780012338 A CN201780012338 A CN 201780012338A CN 108702361 A CN108702361 A CN 108702361A
- Authority
- CN
- China
- Prior art keywords
- tcp
- json
- tcp connection
- json data
- data
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/81—Indexing, e.g. XML tags; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及一种实时处理通过通信网络在源与服务器之间交换的数据流的方法,方法由分类器来执行,所述分类器存储第一组至少一个测试以及已有TCP连接的列表,方法包括:‑接收(400)数据流的TCP片段,该TCP片段包括数据净荷,所述净荷包括HTTP消息的至少一部分;‑识别(401)该TCP片段所属于的第一TCP连接或创建用于所接收TCP片段的新的第一TCP连接;‑检测(406)该HTTP消息的该部分中是否存在JavaScript对象标记JSON数据;在检测到JSON数据的情况下,基于该JSON数据建立(409)树图;‑关于所建立的树图的属性执行(410)该第一组的至少一个测试从而确定该JSON数据是否无效;如果JSON数据无效,则中断(411)该第一TCP连接。
Description
技术领域
本发明总体涉及通信网络中的数据分析,具体地涉及数据流的分类。
背景技术
本节中所描述的方案可以实施,但不一定是先前已经想到或实行过的方案。因此,除非这里另外指示,否则本节中所描述的方案不是本申请中权利要求的现有技术,并且并非因为包含在本节中而被承认是现有技术。
HTTP协议由因特网工程任务组(IETF)标准化为RFC 2616,并且在TCP/IP栈(传输控制协议/因特网协议)上传输。HTTP协议可以被认为是会话级的一部分。
HTTP用于实施大量服务,并且是最常用的会话协议。实际上,越来越多的应用在网络浏览器内运行,并且它们的通信基于HTTP。
HTTP的一个优点是简单,因为该协议支持少量的请求方法,并且基本应用使用两个或三个请求方法(主要为被称为GET和POST的方法)。
根据HTTP协议,将HTTP内容插入到HTTP消息的HTTP主体部(或净荷)中,并且HTTP报头部分包含HTTP消息的控制信息。
为了提高HTTP协议效率,已经根据HTTP协议标准开发了一些扩展,诸如持久连接和流水线化。
持久连接在于在完成HTTP请求之后(从服务器接收到HTTP响应之后)保持承载HTTP客户端与HTTP服务器之间的HTTP会话的TCP连接开放。然后,HTTP客户端可以在同一TCP连接上发送另一HTTP请求。
JavaScript对象标记(JSON)是使用人类可读的文本来传输由属性(还被称为名称或键)值对构成的数据对象的开放标准格式。
JSON是用于异步浏览器/服务器通信的主数据格式之一,大致地代替XML(可扩展表示语言)。
JSON由2014年3月的IETF RFC 7159定义。
JSON协议由JSON-RPC(远程过程调用)使用,其为在多个实施方案中部署且可以被选择作为XML-RPC或SOAP(简单对象接入协议)的代替的RPC协议。
JSON是仅定义了几个数据类型和命令的简单协议。其还可以在AJAX(异步JavaScript和XML)技术中使用。AJAX是在网页已经被加载到网络浏览器中并显示之后,该网页(通常响应于所显示的网页上的用户动作而)请求新数据的能力的术语。
JSON用作由多个开放REST(表述性状态转移)API支持以访问网络服务(诸如FacebookTM、GoogleTM、SpotifyTM等)的格式。在这种情况下,它通常与TCP上承载的HTTP/HTTPS协议关联。
JSON内容然后是HTTP GET请求和/或响应的HTTP主体的一部分。
HTTP报头“内容-类型(内容-类型)”中所设置的MIME(多用途因特网邮件扩展)类型是“应用-JSON)”。
JSON定义了五种基本类型:
-数:可以包含小数部分且可以使用指数E标记的有符号分数;
-字符串:零或更多Unicode字符的序列。字符串用双引号来界定并且支持反斜杠换码句法;
-布尔:真或假值;
-数组:零或更多值的排序列表,各个值可以为任意类型。数组使用方括号标记,其中元素用逗号分隔;
-对象:名称(还被称为键)是字符串的名称/值对的未排序集合。因为对象旨在表示关联数组,所以推荐尽管不要求各键在对象内是唯一的。对象用波形括号来界定,并且使用逗号来划定各对。在各对内,字符“:”将键或名称与其值分开;
-空:空缺值,使用词语null(空)。
允许并忽视句法元素周围或之间的白空间。四种ASCII字符被认为是白空间:空格、水平标签、移行以及回车。
JSON方案(JOSN Schema)规定了基于JSON的格式,以限定JSON数据的结构,目的在于自动测试或检验客户端提交的数据。JSON方案基于来自XMLS方案(XSD)的概念,但是是基于JSON的。JSON数据方案可以用于检验JSON数据。
JSON的主要优点在于简单和灵活性。
然而,JSON的主要缺点在于文本表示导致的解析复杂性,因为单个消息会具有不同的表示。为此,JSON解析需要大量资源,并且基于JSON的服务会较容易经受服务拒绝攻击。
因为大的灵活性允许复杂的实施方案,所以在一些情况下这也是缺点。因此,软件错误的概率较高。
基于JSON的服务由此会经受模糊攻击,攻击者尝试通过向API服务器发送随机数据来找到API服务器中的安全漏洞。
由此,需要能够实时分析由HTTP承载的JSON数据、检查JSON结构的有效性以及构成元素的语义并为了保存一些网络服务而丢弃表示潜在威胁的数据的高效方法。
发明内容
为了解决这些需要中的至少一些,本发明的第一方面涉及一种实时处理通过通信网络在源与服务器之间交换的数据流的方法,方法由分类器、至少一个测试的第一集合以及已有TCP连接的列表来执行,方法包括:
-接收数据流的TCP片段,TCP片段包括净荷,所述净荷包括HTTP消息的至少一部分;
-识别该TCP片段所属于的第一TCP连接或创建用于所接收TCP片段的新的第一TCP连接;
-检测HTTP消息的部分中JSON数据的存在;
-在检测到JSON数据的情况下,基于该JSON数据建立树图;
-关于所建立的树图的属性执行第一组中的至少一个测试从而确定该JSON数据是否无效;
-如果该JSON数据无效,则中断第一TCP连接。
因此,可以在不需要繁重计算资源的情况下执行JSON数据的早期分类。实际上,树图结构使得能够容易地访问JSON数据,并且关于树图的属性(诸如图的结构特征)执行早期分类。这使得能够保护服务器(或客户端)免受攻击者破坏。另外,因为方法以TCP级别执行,所以它对于终止对等体是透明的并且可以实时执行。
根据一些实施方式,树图可以包括多个节点,各节点与以下类型中的给定节点类型对应:
-数;
-字符串;
-布尔值;
-数组;
-对象;
-空。
因此,树图的结构特别专用于JSON语言。
作为补充,树图可以包括多个节点,该多个节点包括根节点和根节点的至少一个子节点,并且树图的属性可以包括以下各项的任意组合:
-树图的节点的总数;
-树图的深度;
-来自对象或数组类型的节点的子节点的最大数量。
仍然补充地,树图的具有数、字符串或布尔类型的各节点可以与键且与键的值关联,并且其中,组合还可以包括:
-键的最大长度;和/或
-值的最大长度。
因此,因为可以容易地计算树图的属性,所以早期分类不需要繁重计算资源。
补充或作为变体,第一组的各测试可以在于将树图的属性中的一个属性与相应预定值进行比较,如果属性超过所述相应预定值,则可以递增计数值,并且如果计数器超过预定阈值,则可以将JSON数据分类为无效。
因此,因为JSON数据的分类仅基于比较,所以早期分类不需要繁重计算资源。
根据一些实施方式,如果在执行至少一个测试之后未将JSON数据分类为无效,则可以对JSON数据执行基于用JSON内容规范完成的JSON方案的语义分类,从而将JSON数据分类为有效或无效。
因此,仅在未将JSON数据分类为无效时执行语义分类,语义分类在计算资源方面比早期分类需求多。
根据一些实施方式,可以通过由分类器向客户端发送第一TCP片段并向服务器发送第二TCP片段来中断该第一TCP连接,第一TCP片段和第二TCP片段包括复位标志。
这使得能够保护服务器(或客户端)免受攻击者破坏。另外,因为方法以TCP级别执行,所以它对于终止对等体是透明的,并且可以实时执行。
根据一些实施方式,在没有在TCP片段中检测到JSON数据的情况下,可以将TCP片段转发到客户端和服务器中TCP片段的接收方。
这使得能够避免影响不包括JSON数据的数据流的时延。
根据一些实施方式,分类器可以包括存储受监测TCP连接的列表的存储器,并且方法还可以包括:
-在识别第一TCP连接时,验证第一TCP连接是否属于受监测TCP连接的列表;
-如果第一TCP连接不属于受监测TCP连接的列表,则向客户端和服务器中TCP片段的接收方转发TCP片段。
这使得能够避免影响该分类不涉及的数据流(例如,与信任客户端的TCP连接)的时延。
根据一些实施方式,分类器可以包括存储受监测TCP连接的列表的存储器,对于各受监测TCP连接,可以维护TCP连接信息,TCP连接信息包括窗口底部(Bottomof Window),所接收TCP片段可以包括TCP序列号,方法还可以包括:
-在识别第一TCP连接时,验证第一TCP连接是否属于受监测TCP连接的列表;
-如果第一TCP连接属于受监测TCP连接的列表,则验证TCP序列号与第一TCP连接的窗口底部是否对应;
-如果TCP序列号与第一TCP连接的窗口底部不对应,则向客户端和服务器中TCP片段的接收方转发TCP片段;
-如果TCP序列号与第一TCP连接的窗口底部对应,则更新第一TCP连接的窗口底部并且继续检测JSON数据的存在。
作为补充或在变体中,各已有TCP连接可以由识别信息来识别,该识别信息包括源地址、TCP源端口、IP目的地地址以及TCP目的地端口,所接收TCP片段可以包括报头,该报头指示第一源地址、第一TCP源端口、第一IP目的地地址以及第一TCP目的地端口。
这使得能够高效地解析TCP片段来检测其是否属于已有TCP连接。
根据一些实施方式,可以至少基于HTTP消息的第一HTTP报头值来检测JSON数据的存在。
作为补充,分类器可以包括HTTP重组缓冲器,并且重组缓冲器的尺寸可以等于至少第一HTTP报头值的最大尺寸。
这使得能够减少重组所需的存储资源量,这对支持大量并发TCP连接而言明显地是优点。
补充或作为变体,第一HTTP报头值可以是与字段“内容-类型”对应的值。还可以基于与字段“内容-长度(Content-Length)”对应的第二HTTP报头值来检测JSON数据长度。
本发明的第二方面涉及一种计算机程序产品,该计算机程序产品包括上面存储有计算机程序指令的计算机可读介质,这些计算机程序指令可加载到计算装置中,并且适于在被加载到计算装置中并由所述计算装置执行时使得计算装置执行根据本发明的第一方面的方法。
本发明的第三方面涉及一种用于实时处理通过通信网络在源与服务器之间交换的数据流的分类器,该分类器包括:
-存储器,该存储器存储至少一个测试的第一集合以及已有TCP连接的列表;
-输入接口,该输入接口被设置成接收数据流的TCP片段,TCP片段包括数据净荷,所述净荷包括HTTP消息的至少一部分;
-处理器,该处理器被设置成:
-识别TCP片段所属于的第一TCP连接或创建用于所接收TCP片段的新的第一TCP连接;
-检测HTTP消息的部分中是否存在JSON数据;
-在检测到JSON数据的情况下,基于JSON数据建立树图;
-关于所建立的树图的属性执行第一组中的至少一个测试,从而确定JSON数据是否无效;
-如果JSON数据无效,则中断第一TCP连接。
附图说明
附图的图中以示例的方式且以非限制的方式例示了本发明,在附图中,同样的附图标记指代类似的元件,并且在附图中:
[图1]图1表示根据本发明的一个实施方式的通信系统。
[图2]图2表示根据本发明的一个实施方式的分类器。
[图3]图3例示了根据本发明的一个实施方式的分类器的处理器。
[图4]图4例示了根据本发明的一些实施方式的方法的步骤。
[图5]图5例示了根据本发明的一些实施方式的表示JSON数据的树图。
具体实施方式
图1例示了根据本发明的实施方式的系统。
系统包括多个客户端10.1和10.2,其例如可以为膝上型电脑10.1和台式计算机10.2。
不对客户端10.1和10.2进行附加限制,客户端可以为任意用户装置,诸如膝上型电脑、台式计算机、触控板或智能电话。
客户端10.1和10.2可以经由相应接入路由器11.1和11.2接入到通信网络12,诸如因特网。
在图1上,接入点11.1和11.2经由有线方式来接入。然而,接入路由器11.1和11.2可以为由客户端10.1和10.2例如经由Wi-fi接入的无线接入点。
因此,客户端可以与借助接入路由器11.1和11.2以及网络12接入的服务器13交换数据流。
例如,服务器13是使用JSON的应用服务器。
实体14位于服务器13与网络12之间。该实体例如可以为防火墙或入侵防御系统IPS。实体14包括根据本发明的分类器15。
不对分类器15的位置进行附加限制,该分类器可以另选地位于网络12中或客户端侧(例如,在接入路由器10.1或10.2中)。
分类器15负责对客户端10.1和10.2与服务器13之间的数据流,具体为服务器13接收的数据,进行过滤。
图2例示了根据本发明的一些实施方式的分类器15的具体结构。
分类器15包括输入接口201(诸如IP分组接收器)、处理器202、随机存取存储器203、大容量储存存储器204以及输出接口205(诸如IP分组发送器)。
在图3上例示了处理器202的内部结构,并且其包括TCP/IP处理器301、HTTP处理器302以及JSON处理器203。
如下文说明的,TCP/IP处理器301被设置成对从IP分组接收器201接收的TCP片段进行分类,管理多个TCP连接以及关联的信息上下文,并且对于给定TCP连接,对所接收TCP片段根据其TCP序列号排序。
HTTP处理器302如以上所说明的被配置成接收已排序TCP片段,划定HTTP报头并且提取有用HTTP信息,诸如HTTP方法、URL或某一特定HTTP报头,诸如内容-类型。具体地,在检测到诸如“应用/json”这样的内容-类型时,HTTP处理器302还划定HTTP主体。相反,不传送包括JSON数据的任何HTTP主体部分的TCP片段可以借助IP分组发送器205被自动转发到服务器13。
JSON处理器303被配置成将JSON方案考虑在内来解析JSON数据,该JSON方案是在大容量储存存储器204中存储的预定语法和语义规则集,用JSON内容规范完成,该JSON内容规范包括存储在大容量储存存储器204中的预定语义规范。基于JSON数据的分类来过滤所接收TCP片段(转发到接收方或不转发)。
图4是例示了根据本发明的一些实施方式的由分类器15执行的方法的步骤的流程图。
在以下示例中,分类器15仅处理由客户端10.1和10.2向服务器13发送的请求。不处理由服务器15答复的响应,例如因为服务器5被认为是可信的。然而,在一些情况下,为了确定服务器15是否受感染并尝试危害客户端10.1和10.2,划定器15可以分析并过滤服务器响应。在这种情况下,可以对于从服务器15流向客户端10.1和10.2中的一个客户端的TCP片段进行同样的方法步骤。
因为TCP连接可以被视为两个独立的TCP半连接(从客户端10.1或10.2到服务器13的一个连接和从服务器13到客户端10.1或10.2的另一连接),所以我们在以下描述中为了例示性目的仅考虑从客户端10.1或10.2向服务器13流动的数据流的分析和过滤。
在步骤400处,由IP分组接收器201接收TCP片段。
在步骤401处,将TCP片段分类为属于已有TCP连接或属于新TCP连接。例如,TCP连接可以由四元组{IP源地址,TCP源端口,IP目的地地址,TCP目的地端口}来识别。TCP片段可以被解析从而获得四元组元素,并且可以将所提取的四元组与开放连接的四元组进行比较。开放连接的列表可以例如存储在大容量储存存储器204中。
在连续接收具有SYN和SYN-ACK握手分组的TCP片段时,假定在大容量储存存储器204中尚未列出具有同一四元组的TCP连接,则可以监测新TCP连接。
如果检测到匹配,例如与第一TCP连接,则可以将TCP片段分类为属于第一TCP连接。否则,创建新TCP连接并将其添加到开放TCP连接的列表。新TCP连接与所接收TCP片段的四元组关联。
在服务器13的开放TCP连接的列表中,分类器15可以维护受监测TCP连接的列表。受监测TCP连接是要由分类器15观察的TCP连接,而未受监测TCP连接不需要被观察。例如,受监测TCP连接的列表可以存储在大容量储存存储器204中。可以定义另外的规则来确定新TCP连接是否应属于受监测TCP连接的列表。比如,仅观察与服务器13有关的数据流可以是有用的。在这种情况下,可以设置在目的地端口(例如,端口80)上的过滤器,并且仅监测在四元组中具有该目的地端口的TCP连接。
在步骤402处,确定第一TCP连接是否属于受监测TCP连接的列表。
如果第一TCP连接不属于受监测TCP连接的列表,则在步骤403处向服务器13以及客户端10.1和10.2中的一个中TCP片段的接收方转发TCP片段。
如果第一TCP连接属于受监测TCP连接的列表,则可以在步骤404处更新与第一TCP连接关联的内部数据结构。该内部数据结构包括TCP信息上下文,其存储与第一TCP连接有关的永久数据,诸如连接状态、窗口底部等。该内部数据结构还包括收集按所接收TCP片段的片段号码排序的TCP片段的未定列表。在检测到新TCP连接时,TCP/IP处理器301向TCP连接分配新数据结构。在接收到具有RST或FIN标志的TCP片段时,释放TCP连接。
更新步骤404包括在第一TCP连接的TCP片段未定列表中插入所接收TCP片段,其按序列号排序。如果所接收TCP片段的序列号不等于第一TCP连接的窗口底部(即,是序列外部的TCP片段),则方法转到步骤403,并且将该TCP片段转发到TCP片段的接收方。否则,在步骤404处基于TCP片段长度的长度来更新窗口底部。
未被转发的TCP片段被保留以从步骤405由高层处理器302和303进一步分析。
在步骤405处,由HTTP处理器405处理并分析TCP片段(尚未转发的)和TCP未定列表的附加连续段。
例如,被封装在一个或更多个TCP片段的净荷中的HTTP消息可以具有以下结构:
HTTP消息可以被划分成多个连续TCP片段,所以重组HTTP消息的一些部分可能是必要的。然而,步骤405处的重组处理仅需要提取相关HTTP报头值,诸如内容-类型、内容-长度,从而在步骤406处检测HTTP消息中的JSON数据的有无。
本发明因此提出使用具有被设置成所提取报头值的最大长度(内容-类型和内容-长度值的最大长度)的深度的重组缓冲器。这使得能够减少所需的存储资源的量,这在监测大量并发TCP连接时是明显的优点。
例如,两个连续TCP片段可以如下:
在以上所例示的特定示例中,相关HTTP报头值(与内容-类型对应)被分在两个TCP片段上,这示出重组缓冲器对于在步骤406处检测存在JSON数据可以是有用的。
如果在步骤406处检测到不存在JSON数据,则在步骤403处转发位于窗口底部处的所接收TCP片段。
通过在最后一个HTTP报头之后(在示例中的内容-类型字段之后)找到空行可以识别HTTP消息的主体。如果在步骤406检测到存在JSON数据,则在步骤407压缩JSON数据(这意味着白空间字符被去除),并且可以在步骤408在JSON数据重组缓冲器中复制压缩后的JSON数据。JSON数据的长度由“内容-长度”HTTP报头来给出。当使用HTTP持久连接时,一旦检测到JSON数据的末尾,则可以划定下一HTTP请求/响应。
JSON处理器303被设置成在步骤409解析在JSON数据重组缓冲器中包含的JSON数据,以生成JSON数据的内部表示作为树图。
树图包括多个节点,各节点例如由包括以下元素的任意组合的结构来表示:
-节点类型:数(0)、字符串(1)、布尔值(2)、数组(3)、对象(4)、空(5);
-到压缩后的JSON文本数据中的键字符串起始索引;
-键字符串长度(在没有键名称时其可以等于0,特别是对于数组项而言);
-针对布尔值、整数以及字符串节点的值字符串起始索引;
-针对布尔值、整数以及字符串节点的值字符串长度。
对于数组项,键字符串起始索引可以用数组内部的索引代替(对于第一项为0,对于第二项为1,以此类推),并且键字符串长度可以被设置成0。
针对对象和数组,值字符串起始索引和长度可以用朝着子节点的指针的列表代替。
用于建立基于JSON数据的树图的这些规则仅是为了例示目的而给出的,并且本发明包含用于建立基于JSON数据的树图的任何方法。
图5例示了可以基于以上所给出的JSON数据的示例获得的内部树图结构。
在图5上,各节点被标号为500,并且如以上详细说明的包括节点类型201、键字符串起始索引502、键字符串长度503、值字符串起始索引504以及值字符串长度505。
例如,根节点是对象(类型=4)并且因此具有键字符串开始长度0。值字符串起始索引和长度如以上所说明的是对四个子节点506、507、508以及509的指针。
第一子节点506表示JSON数据部分“firstName”:“John”:
字段501中的“1”表示节点为字符串;
字段502中的“2”表示节点的键“firstName”在JSON数据中的索引2(JSON数据的第二字符)处开始;
字段503中的“9”为键“firstName”的长度;
字段504中的“11”表示节点的值“John”在JSON数据中的索引11处开始;
字段505中的“4”为值“John”的长度。
子节点507表示JSON数据部分“age”:25,其为数。子节点508表示数组“phoneNumbers”,并且子节点509表示数组“children”。
因此,JSON处理器303被设置成在步骤409从JSON数据重组缓冲器取得JSON数据,并且建立树图。根据一些实施方式,当节点的描述不完全(即,JSON数据重组缓冲器没有包含足够的JSON数据)时可以中断解析步骤409。然后,可以在不完全节点的描述的起点处移动分析结束指针。解析步骤409可以在接收具有等于窗口底部的序列号的第一TCP连接的下一TCP片段时重新开始。
这种树图可以由JSON处理器303有利地用于快速访问任何JSON节点并浏览JSON数据。
返回到图4,所生成的树图的属性还可以用于在步骤410执行JSON数据的早期分类。
早期分类如下文中说明的是指作为诸如语义分类这样的较深分类的准备的分类。
例如,对于步骤410处的早期分类可以考虑以下树图属性中的一个或多个:
-节点的总数;
-树图的深度;
-对于对象/数组的子节点的最大数量;
-键的最大长度;
-值的最大长度。
基于JSON方案,为了步骤410的早期分类,可以预定并检查对这些属性的一些标准。
例如,JSON方案详细说明由服务器13使用的JSON API的语法和语义。JSON内容规范可以完成由服务器13使用的JSON API的语义。
例如,对于简单API,可以认为节点的总数小于N(N为整数),并且图具有最大深度M(M为整数)。对于对象/数组的子节点的数量还可以限于给定预定值,该给定预定值依赖于JSON API。
因此,预定测试的第一集合。这些测试中的每个可以返回结果,例如OK(成功)或NOK(失败)。如果NOK的数量等于或大于第一预定阈值,则可以将JSON数据分类为无效。通过在每次对于测试发布NOK结果时递增计数值可以确定NOK数量。
另选地,仅一个测试可以被应用。在这种情况下,使用测试的结果来在步骤410对JSON数据分类。
如果JSON数据在步骤410通过早期分类分类为无效,则TCP/IP处理器301可以在步骤411处中断第一TCP连接。例如,TCP/IP处理器301可以生成包括复位标志的两个TCP片段,并且向源和接收方发送所生成的TCP片段,从而关闭第一TCP连接。这使得能够在不需要繁重计算资源的情况下保护终止对等体,因为早期分类仅需要与预定阈值的比较。
如果在步骤410处未将JSON数据分类为无效,则JSON处理器303可以在步骤412处执行语义分类。
例如,根据与服务器13使用的JSON API相关联的JSON内容规范,可以对于各JSON节点语义类型定义与键和值元素有关的语义规则。依赖于表示JSON数据的树图内的节点的位置,各键字符串可以与字典(即,可能值的集合)匹配。
比如,在图5的示例中,在树图第一级的可能键值为{“firstName”,“age”,“phoneNumbers”,“children”},并且“phoneNumbers”对象内的可能键值为{“type”,“number”}。
关于值,依赖于节点为数、字符串还是布尔值,可以定义不同的规则:
-对于数,可以检查数属于预定范围;
-对于字符串,可以预定字符集,其包括ASCIII或UTF-8字符集的子集。比如,电话号码值将仅包括数字和连字符。
针对给定节点而检查的各规则依赖于给定节点的语义类型。
再次,可以检查第二组测试(或规则),并且可以返回诸如OK和NOK这样的结果。如果NOK结果的数量超过第二预定阈值,则可以将JSON数据分类为无效,并且TCP/IP处理器301可以在步骤411处中断第一TCP连接。否则,可以将JSON数据分类为有效,并且在步骤403处转发位于窗口底部处的所接收TCP片段。
因此,如图1所示,根据本发明的方法优选地在运行网络服务的受保护服务器13前面的分类器15中进行。在这种拓扑中,分类器15能够拦截承载着由网络API不可信客户端10.1或10.2发送的呼入请求的任何TCP/IP分组。一旦由系统分析,则将IP分组(或TCP片段)简单地转发到希望的网络服务器15。当JSON数据被检测为危险时,根据本发明的方法提出复位TCP连接而不是转发TCP片段,因而保护服务器13。在TCP级别,分析处理是透明的,因为TCP应答方案是由终止对等体(服务器13以及客户端10.1和10.2)来管理的。因此,根据本发明的方法不需要复杂的TCP管理层,清楚地这是益处,因为它允许同时处理大量并发连接。
本发明还可以嵌入在计算机程序产品中,该计算机程序产品包括使得能够实施这里所描述的方法的所有特征,并且当计算机程序产品被加载在信息处理系统中时,使得信息处理系统实施本发明。本上下文中的计算机程序装置或计算机程序表示旨在使得具有信息处理能力的系统直接或在到另一种语言的转换之后执行特定功能的一组指令的、使用任意语言、代码或符号的任意表达。这种计算机程序可以存储在计算机或机器可读介质上,该介质允许从介质读取数据、指令、消息或消息包以及其他机器可读信息。计算机或机器可读介质可以包括非易失性存储器,诸如ROM、闪存、硬盘驱动器存储器、CD-ROM以及其他永久储存器。另外,计算机或机器可读介质例如可以包括易失性储存器,诸如RAM、缓冲器、高速缓冲存储器以及网络电路。此外,计算机或机器可读介质可以包括暂时状态介质(诸如包括有线网络或无线网络的网络链路和/或网络接口)中的计算机或机器可读信息,该暂时状态介质允许装置读取这种计算机或机器可读信息。
诸如“包括”、“并入”、“包含”、“是”以及“具有”的表达在解释说明书及其关联权利要求时以非穷尽方式来解释,即,被解释为允许未被明确限定为也存在的其他项或部件。对单数的参照也应被解释为对复数的参照,反之亦然。
虽然已经例示并描述了目前被认为是本发明的优选实施方式的内容,但本领域技术人员将理解,可以在不偏离本发明的真实范围的情况下进行各种其他修改并可以替换等同物。另外,可以在不偏离这里所描述的中心发明概念的情况下进行许多修改,以使得特定情形适应本发明的示教。此外,本发明的实施方式可以不包括以上所描述的所有特征。因此,意图是本发明不限于所公开的特定实施方式,而是本发明包括落在如以上广泛定义的本发明的范围内的所有实施方式。
本领域技术人员将容易地理解,可以在不偏离本发明的范围的情况下对说明书中公开的各种参数进行修改并对所公开和/或要求保护的各种实施方式进行组合。
Claims (16)
1.一种实时处理通过通信网络(12)在源(10.1;10.2)与服务器(13)之间交换的数据流的方法,该方法由分类器(15)来执行,所述分类器存储第一组至少一个测试以及已有TCP连接的列表,所述方法包括:
-接收(400)所述数据流的TCP片段,该TCP片段包括数据净荷,该净荷包括HTTP消息的至少一部分;
-识别(401)所述TCP片段所属于的第一TCP连接或创建用于所接收TCP片段的新的第一TCP连接;
-检测(406)所述HTTP消息的所述部分中是否存在JSON数据;
-在检测到JSON数据的情况下,基于所述JSON数据建立(409)树图;
-关于所建立的树图的属性执行(410)所述第一组中的至少一个测试从而确定所述JSON数据是否无效;
-如果所述JSON数据无效,则中断(411)所述第一TCP连接。
2.根据权利要求1所述的方法,其中,所述树图包括多个节点(500),各节点对应于以下类型中的给定节点类型:
-数;
-字符串;
-布尔值;
-数组;
-对象;
-空。
3.根据权利要求2所述的方法,其中,所述树图包括多个节点(500),该多个节点包括根节点和所述根节点的至少一个子节点,其中,所述树图的属性包括以下各项的任意组合:
-所述树图的节点的总数;
-所述树图的深度;
-来自所述对象或数组类型的节点的子节点的最大数量。
4.根据权利要求3所述的方法,其中,所述树图的具有数、字符串或布尔值类型的各节点(500)与键且与所述键的值关联,并且其中,所述组合还包括:
-键的最大长度;和/或
-值的最大长度。
5.根据权利要求3或4所述的方法,其中,所述第一组的各测试在于将所述树图的所述属性中的一个属性与相应预定值进行比较,其中,如果所述属性超过所述相应预定值,则递增计数值,并且其中,如果所述计数器超过预定阈值,则将所述JSON数据分类为无效。
6.根据前述权利要求中任一项所述的方法,其中,如果在执行所述至少一个测试之后未将所述JSON数据分类为无效,则对所述JSON数据执行基于用JSON内容规范完成的JSON方案的语义分类,从而将所述JSON数据分类为有效或无效。
7.根据前述权利要求中任一项所述的方法,其中,通过由所述分类器(15)向所述客户端(10.1;10.2)发送第一TCP片段并向所述服务器(13)发送第二TCP片段来中断所述第一TCP连接,所述第一TCP片段和所述第二TCP片段包括复位标志。
8.根据前述权利要求中任一项所述的方法,其中,在没有在所述TCP片段中检测到JSON数据的情况下,将所述TCP片段转发到所述客户端和所述服务器中所述TCP片段的接收方。
9.根据前述权利要求中任一项所述的方法,其中,所述分类器(13)包括存储受监测TCP连接的列表的存储器,
其中,该方法还包括:
-在识别到所述第一TCP连接时,验证(402)所述第一TCP连接是否属于所述受监测TCP连接的列表;
-如果所述第一TCP连接不属于所述受监测TCP连接的列表,则向所述客户端和所述服务器中所述TCP片段的接收方转发(403)所述TCP片段。
10.根据前述权利要求中任一项所述的方法,其中,所述分类器包括存储受监测TCP连接的列表的存储器,其中,对于各受监测TCP连接,维护TCP连接信息,所述TCP连接信息包括窗口底部;
其中,所接收TCP片段包括TCP序列号;
其中,所述方法包括:
-在识别到所述第一TCP连接时,验证(402)所述第一TCP连接是否属于所述受监测TCP连接的列表;
-如果所述第一TCP连接属于所述受监测TCP连接的列表,则验证(404)所述TCP序列号与所述第一TCP连接的所述窗口底部是否对应;
-如果所述TCP序列号与所述第一TCP连接的所述窗口底部不对应,则向所述客户端和所述服务器中所述TCP片段的接收方转发(403)所述TCP片段;
-如果所述TCP序列号与所述第一TCP连接的所述窗口底部对应,则更新(404)所述第一TCP连接的所述窗口底部并且继续检测JSON数据的存在。
11.根据权利要求9或10所述的方法,其中,各已有TCP连接由识别信息来识别,该识别信息包括源地址、TCP源端口、IP目的地地址以及TCP目的地端口;
其中,所接收TCP片段包括报头,该报头指示第一源地址、第一TCP源端口、第一IP目的地地址以及第一TCP目的地端口。
12.根据前述权利要求中任一项所述的方法,其中,至少基于所述HTTP消息的第一HTTP报头值来检测JSON数据的存在。
13.根据权利要求12所述的方法,其中,所述分类器包括HTTP重组缓冲器,并且其中,所述重组缓冲器的尺寸等于至少所述第一HTTP报头值的最大尺寸。
14.根据权利要求12或13所述的方法,其中,所述第一HTTP报头值是与字段“内容-类型”对应的值,并且其中,基于与字段“内容-长度”对应的第二HTTP报头值来检测JSON数据长度。
15.一种计算机程序产品,该计算机程序产品包括存储有计算机程序指令的计算机可读介质,这些计算机程序指令可加载到计算装置中,并且在被加载到所述计算装置中并由所述计算装置执行时使得所述计算装置执行根据权利要求1至14中任一项的方法。
16.一种用于实时处理通过通信网络(12)在源(10.1;10.2)与服务器(13)之间交换的数据流的分类器,其中,所述分类器(15)包括:
-存储器(204),该存储器存储第一组至少一个测试以及已有TCP连接的列表;所述方法包括
-输入接口(201),该输入接口被设置成接收所述数据流的TCP片段,所述TCP片段包括数据净荷,该净荷包括HTTP消息的至少一部分;
-处理器(202),该处理器被设置成:
-识别所述TCP片段所属于的第一TCP连接或创建用于所接收TCP片段的新的第一TCP连接;
-检测所述HTTP消息的所述部分中是否存在JSON数据;
-在检测到JSON数据的情况下,基于所述JSON数据建立树图;
-关于所建立的树图的属性执行所述第一组中的至少一个测试,从而确定所述JSON数据是否无效;
-如果所述JSON数据无效,则中断所述第一TCP连接。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP16305225.1A EP3211853B1 (en) | 2016-02-26 | 2016-02-26 | Real-time validation of json data applying tree graph properties |
EP16305225.1 | 2016-02-26 | ||
PCT/JP2017/005602 WO2017145898A1 (en) | 2016-02-26 | 2017-02-09 | Real-time validation of json data applying tree graph properties |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108702361A true CN108702361A (zh) | 2018-10-23 |
Family
ID=55521652
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780012338.0A Pending CN108702361A (zh) | 2016-02-26 | 2017-02-09 | 应用树图属性的json数据的实时验证 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10805435B2 (zh) |
EP (1) | EP3211853B1 (zh) |
JP (1) | JP6548823B2 (zh) |
CN (1) | CN108702361A (zh) |
WO (1) | WO2017145898A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110764768B (zh) * | 2018-07-26 | 2024-09-20 | 京东科技控股股份有限公司 | 一种模型对象与json对象互转的方法和装置 |
US11068468B2 (en) | 2019-03-29 | 2021-07-20 | Adp, Llc | Extensible validation framework |
US12153594B2 (en) * | 2022-01-04 | 2024-11-26 | Sap Se | Smart view generation for payloads |
CN114077609B (zh) * | 2022-01-19 | 2022-04-22 | 北京四维纵横数据技术有限公司 | 数据存储及检索方法,装置,计算机可读存储介质及电子设备 |
CN118796920A (zh) * | 2024-06-25 | 2024-10-18 | 深圳蓬莱智数科技有限公司 | 一种数据处理方法及装置 |
CN118555148A (zh) * | 2024-07-29 | 2024-08-27 | 杭州优云科技股份有限公司 | 一种报文拦截方法、装置、电子设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007009210A1 (en) * | 2005-07-22 | 2007-01-25 | Cognos Incorporated | Rich web application input validation |
CN102891779A (zh) * | 2012-09-27 | 2013-01-23 | 北京网瑞达科技有限公司 | 用于ip网络的大规模网络性能测量系统和方法 |
CN103310025A (zh) * | 2013-07-08 | 2013-09-18 | 北京邮电大学 | 非结构化数据的描述方法及装置 |
US20150317327A1 (en) * | 2014-04-30 | 2015-11-05 | Microsoft Corporation | Hierarchical Index Based Compression |
CN105704061A (zh) * | 2014-11-27 | 2016-06-22 | 中国移动通信集团江苏有限公司 | 一种发送速率控制方法及设备 |
CN106156286A (zh) * | 2016-06-24 | 2016-11-23 | 广东工业大学 | 面向专业文献知识实体的类型抽取系统及方法 |
CN106201886A (zh) * | 2016-07-18 | 2016-12-07 | 合网络技术(北京)有限公司 | 一种实时数据任务的验证的代理方法及装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8743130B2 (en) * | 2009-08-28 | 2014-06-03 | Zynga Inc. | Apparatuses, methods and systems for a distributed object renderer |
US8640216B2 (en) * | 2009-12-23 | 2014-01-28 | Citrix Systems, Inc. | Systems and methods for cross site forgery protection |
US20110289425A1 (en) * | 2010-05-20 | 2011-11-24 | Salesforce.Com, Inc. | Methods and systems for providing a user interface in a multi-tenant database environment |
KR101005927B1 (ko) * | 2010-07-05 | 2011-01-07 | 펜타시큐리티시스템 주식회사 | 웹 어플리케이션 공격 탐지 방법 |
GB201108709D0 (en) * | 2011-05-24 | 2011-07-06 | Corethree Ltd | Core engine |
US9838454B2 (en) * | 2014-04-23 | 2017-12-05 | Cisco Technology, Inc. | Policy-based payload delivery for transport protocols |
-
2016
- 2016-02-26 EP EP16305225.1A patent/EP3211853B1/en active Active
-
2017
- 2017-02-09 WO PCT/JP2017/005602 patent/WO2017145898A1/en active Application Filing
- 2017-02-09 US US16/061,184 patent/US10805435B2/en not_active Expired - Fee Related
- 2017-02-09 CN CN201780012338.0A patent/CN108702361A/zh active Pending
- 2017-02-09 JP JP2018518531A patent/JP6548823B2/ja not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007009210A1 (en) * | 2005-07-22 | 2007-01-25 | Cognos Incorporated | Rich web application input validation |
CN102891779A (zh) * | 2012-09-27 | 2013-01-23 | 北京网瑞达科技有限公司 | 用于ip网络的大规模网络性能测量系统和方法 |
CN103310025A (zh) * | 2013-07-08 | 2013-09-18 | 北京邮电大学 | 非结构化数据的描述方法及装置 |
US20150317327A1 (en) * | 2014-04-30 | 2015-11-05 | Microsoft Corporation | Hierarchical Index Based Compression |
CN105704061A (zh) * | 2014-11-27 | 2016-06-22 | 中国移动通信集团江苏有限公司 | 一种发送速率控制方法及设备 |
CN106156286A (zh) * | 2016-06-24 | 2016-11-23 | 广东工业大学 | 面向专业文献知识实体的类型抽取系统及方法 |
CN106201886A (zh) * | 2016-07-18 | 2016-12-07 | 合网络技术(北京)有限公司 | 一种实时数据任务的验证的代理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US20180359342A1 (en) | 2018-12-13 |
WO2017145898A1 (en) | 2017-08-31 |
EP3211853A1 (en) | 2017-08-30 |
JP2018531466A (ja) | 2018-10-25 |
EP3211853B1 (en) | 2019-10-30 |
JP6548823B2 (ja) | 2019-07-24 |
US10805435B2 (en) | 2020-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108702361A (zh) | 应用树图属性的json数据的实时验证 | |
Lee et al. | Switchtree: in-network computing and traffic analyses with random forests | |
US7958227B2 (en) | Attributes of captured objects in a capture system | |
US8959157B2 (en) | Real-time spam look-up system | |
US10284578B2 (en) | Creating a multi-dimensional host fingerprint for optimizing reputation for IPV6 | |
US8010689B2 (en) | Locational tagging in a capture system | |
JP2018531466A6 (ja) | 木グラフプロパティを適用するjsonデータのリアルタイムバリデーション | |
CN111752973B (zh) | 生成用于识别垃圾电子邮件的启发式规则的系统和方法 | |
CN109327395A (zh) | 一种报文处理方法及装置 | |
CN106911640A (zh) | 网络威胁处理方法和装置 | |
JP2005184792A (ja) | 帯域制御装置、帯域制御方法及び帯域制御プログラム | |
CN108462615A (zh) | 一种网络用户分组方法和装置 | |
CN113163406A (zh) | 用于移动通信系统的威胁侦测系统及其中心装置与本地装置 | |
CN101795273B (zh) | 一种垃圾邮件过滤方法及装置 | |
CN103501302B (zh) | 一种蠕虫特征自动提取的方法及系统 | |
CN103516703A (zh) | 一种数据报文检测方法和设备 | |
CN109391583B (zh) | 一种基于恶意应用的攻击者溯源方法和系统 | |
EP2749001A2 (en) | Determining validity of sip messages without parsing | |
Marsono | Packet‐level open‐digest fingerprinting for spam detection on middleboxes | |
CN108605039A (zh) | 在spdy连接上检测恶意软件 | |
CN112989315A (zh) | 物联网终端的指纹生成方法、装置、设备和可读存储介质 | |
Li et al. | Spoofingguard: A content-agnostic framework for email spoofing detection via delivery graph | |
Hejun et al. | Online and automatic identification of encryption network behaviors in big data environment | |
Li et al. | Protocol Analysis Method Based on State Machine | |
Wu et al. | Shutter: Preventing information leakage based on domain gateway for social networks |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20181023 |
|
WD01 | Invention patent application deemed withdrawn after publication |