CN116108294A - 指令判断方法及可读存储介质 - Google Patents
指令判断方法及可读存储介质 Download PDFInfo
- Publication number
- CN116108294A CN116108294A CN202210850723.5A CN202210850723A CN116108294A CN 116108294 A CN116108294 A CN 116108294A CN 202210850723 A CN202210850723 A CN 202210850723A CN 116108294 A CN116108294 A CN 116108294A
- Authority
- CN
- China
- Prior art keywords
- data
- string
- instruction
- rule
- identifier
- 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
Images
Classifications
-
- 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/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/151—Transformation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Retry When Errors Occur (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种指令判断方法及可读存储介质。其中,所述指令判断方法包括如下步骤:基于数据生成子方法的得到第一链式数据和第二链式数据;基于所述第一链式数据得到数据过滤集;判断所述第二链式数据是否属于所述数据过滤集,以判断当前的所述请求指令是否为异常请求。其中,所述数据生成子方法包括:基于拆分、映射和链接操作将请求指令转换为一条链式数据。如此配置,通过所述数据生成子方法将所述请求指令进行了合理的转化,在保留了原有请求指令全部信息的前提下,简化了判断依据,并隐藏了背后的映射逻辑,在效率、机制、通用性和反逆向方面均有显著提升,解决了现有技术中存在的问题。
Description
技术领域
本发明涉及一种数据安全检测技术,特别涉及一种指令判断方法及可读存储介质。
背景技术
WEB(全球广域网,也称为万维网)日志记录了用户对于站点的请求。通过对日志中访问URL(Uniform Resource Locator,统一资源定位系统)的解析,能够检测出大量的恶意行为:如XSS(Cross Site Scripting,跨站脚本攻击,其中,用X代替Cross以防止与Cascading Style Sheets的简称CSS混淆)、SQL(一种数据库语言)注入等。但是,当WEB访问量处于较大的数量级时,检测模块的处理速度会落后于日志的产生速度,导致无法实时的检测出恶意行为。因此需要一种算法能够以极快的速度将正常的访问请求和异常访问请求区分开。
目前,WEB日志领域常见的过滤技术是基于指定字符串的简单截断。比如,针对站点的目录进行简单的分析。比如:“www.test.com/s?ie=utf-8&f=8&rsv_bp=1”,这类站点的请求由两部分组成:问号之前的网站目录和问号之后的请求参数。该技术将特殊字符“?”之前的部分作为站点的目录之一。统计一段时间的网站请求后,对目录的访问频次进行排序,指定一个与之后,对访问不常见的站点目录的请求直接划入异常请求流量。
上述方案存在如下缺陷:
1.过滤机制过于简单,主要是特定字符、特定路径。恶意用户经过简单的测试就可发现。
2.恶意用户能够轻易绕过这种过滤机制,并逃避后续的检测流程,实现攻击目的。
3.在流量过滤的阶段中,不考虑请求参数。
4.部分站点请求不存在目录结构和请求参数的固定分隔符。
总之,现有技术中的异常请求判断方法存在效率、机制、通用性和反逆向方面效果不够理想的问题。
发明内容
本发明提供了一种指令判断方法及可读存储介质,以解决现有技术中的异常请求判断方法存在效率、机制、通用性和反逆向方面效果不够理想的问题。
为了解决上述技术问题,本发明提供了一种指令判断方法,所述指令判断方法包括如下步骤:基于数据生成子方法将历史的请求指令转化为第一链式数据;分析每条所述第一链式数据的出现比率,得到数据过滤集;基于所述数据生成子方法将当前的所述请求指令转化为第二链式数据;以及,判断所述第二链式数据是否属于所述数据过滤集,若是,判断当前的所述请求指令为正常请求,否则,判断当前的所述请求指令为异常请求。
其中,所述数据生成子方法包括:基于分隔符对所述请求指令进行拆分得到字符串单元;按照预设规则将每个所述字符串单元映射为一个标识符串;以及,按照所述字符串单元在所述请求指令中的顺序,将所述标识符串连接为一条链式数据。
可选的,所述数据过滤集以树的数据格式进行存储和调用,所述第一链式数据和所述第二链式数据对应于所述数据过滤集的路径,所述数据过滤集的路径均从根节点开始,并结束于所述数据过滤集的叶子节点。
可选的,所述请求指令为WEB请求指令;在所述按照第一预设规则对所述请求指令进行拆分得到字符串单元之前,所述数据生成子方法还包括:若所述请求指令的格式不符合URL编码规范,则将所述请求指令的格式转化为符合URL编码规范的格式。
可选的,分析每条所述第一链式数据的出现比率,得到数据过滤集的步骤包括:分析每条所述第一链式数据的出现比率;以及,按照如下标准建立所述数据过滤集:任意一条属于所述数据过滤集的所述第一链式数据的出现比率大于或者等于任意一条不属于所述数据过滤集的所述第一链式数据的出现比率;所述数据过滤集中的包含的所述第一链式数据的出现比率的总和大于或者等于预设比率;删除所述数据过滤集中的任意一条所述第一链式数据后,所述数据过滤集中剩余的所述第一链式数据的出现比率的总和小于所述预设比率。
可选的,所述预设比率为97%。
可选的,所述基于分隔符对所述请求指令进行拆分得到字符串单元步骤包括:基于所述分隔符将所述请求指令分割为至少一个准备字符串;第一个出现的所述分隔符被直接配置为所述字符串单元;除了最后一个所述准备字符串外,其余的所述准备字符串与自身之后的所述分隔符拼接得到所述字符串单元;以及,最后一个所述准备字符串直接配置为所述字符串单元。
可选的,所述分隔符包括除大写字母、小写字母以及数字之外的所有其他字符。
可选的,所述预设规则包括第一规则、第二规则和第三规则中的至少一者。
所述第一规则为:基于所述字符串单元中是否包含所述分隔符映射所述标识符串;以及,基于所述字符串单元中包含的所述分隔符映射所述标识符串。
所述第二规则包括如下规则中的至少一者:基于所述字符串单元中是否包含大写字母映射所述标识符串;基于所述字符串单元中是否包含小写字母映射所述标识符串;以及,基于所述字符串单元中是否包含数字映射所述标识符串。
所述第三规则为:基于所述字符串单元中的特征字符数映射所述标识符串,其中,所述特征字符数=所述字符串单元中的除数字和所述分隔符以外的字符的数量+B2N(所述字符串单元是否存在数字),B2N表示将布尔值转换为整数的运算,TRUE转换为1,FALSE转换为0。
可选的,所述预设规则包括第一规则、第二规则和第三规则中的至少一者。
所述第一规则为:包含所述分隔符的所述字符串单元和不包含所述分隔符的所述字符串单元映射至不同的所述标识符串;以及,包含的所述分隔符不同的所述字符串单元映射至不同的所述标识符串。
所述第二规则包括如下规则中的至少一者:包含大写字母的所述字符串单元和不包含大写字母的所述字符串单元映射至不同的所述标识符串;包含小写字母的所述字符串单元和不包含小写字母的所述字符串单元映射至不同的所述标识符串;以及,包含数字的所述字符串单元和不包含数字的所述字符串单元映射至不同的所述标识符串。
所述第三规则为:特征字符数不同的所述字符串单元中字符的数量映射不同的所述标识符串,其中,所述特征字符数=所述字符串单元中的除数字和所述分隔符以外的字符的数量+B2N(所述字符串单元是否存在数字),B2N表示将布尔值转换为整数的运算,TRUE转换为1,FALSE转换为0。
为了解决上述技术问题,本发明还提供了一种可读存储介质,所述可读存储介质上存储有程序,所述程序执行时,运行上述的指令判断方法。
与现有技术相比,本发明提供的指令判断方法及可读存储介质中,所述指令判断方法包括如下步骤:基于数据生成子方法将历史的请求指令转化为第一链式数据;分析每条所述第一链式数据的出现比率,得到数据过滤集;基于所述数据生成子方法将当前的所述请求指令转化为第二链式数据;以及,判断所述第二链式数据是否属于所述数据过滤集,若是,判断当前的所述请求指令为正常请求,否则,判断当前的所述请求指令为异常请求。其中,所述数据生成子方法包括:基于分隔符对所述请求指令进行拆分得到字符串单元;按照预设规则将每个所述字符串单元映射为一个标识符串;以及,按照所述字符串单元在所述请求指令中的顺序,将所述标识符串连接为一条链式数据。如此配置,通过所述数据生成子方法将所述请求指令进行了合理的转化,在保留了原有请求指令全部信息的前提下,简化了判断依据,并隐藏了背后的映射逻辑,在效率、机制、通用性和反逆向方面均有显著提升,解决了现有技术中存在的问题。
附图说明
本领域的普通技术人员将会理解,提供的附图用于更好地理解本发明,而不对本发明的范围构成任何限定。其中:
图1是本发明一实施例的流程示意图;
图2是本发明一实施例的数据生成子方法的流程示意图;
图3是本发明一实施例的数据过滤集的数据结构示意图;
图4是本发明一实施例的步骤S20的流程示意图;
图5是本发明一实施例的步骤S120的流程示意图。
附图中:
1-路径;2-数据过滤集。
具体实施方式
为使本发明的目的、优点和特征更加清楚,以下结合附图和具体实施例对本发明作进一步详细说明。需说明的是,附图均采用非常简化的形式且未按比例绘制,仅用以方便、明晰地辅助说明本发明实施例的目的。此外,附图所展示的结构往往是实际结构的一部分。特别的,各附图需要展示的侧重点不同,有时会采用不同的比例。
如在本发明中所使用的,单数形式“一”、“一个”以及“该”包括复数对象,术语“或”通常是以包括“和/或”的含义而进行使用的,术语“若干”通常是以包括“至少一个”的含义而进行使用的,术语“至少两个”通常是以包括“两个或两个以上”的含义而进行使用的,此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括一个或者至少两个该特征,“一端”与“另一端”以及“近端”与“远端”通常是指相对应的两部分,其不仅包括端点,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。此外,如在本发明中所使用的,一元件设置于另一元件,通常仅表示两元件之间存在连接、耦合、配合或传动关系,且两元件之间可以是直接的或通过中间元件间接的连接、耦合、配合或传动,而不能理解为指示或暗示两元件之间的空间位置关系,即一元件可以在另一元件的内部、外部、上方、下方或一侧等任意方位,除非内容另外明确指出外。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
本发明的核心思想在于提供一种指令判断方法及可读存储介质,以解决现有技术中的异常请求判断方法存在效率、机制、通用性和反逆向方面效果不够理想的问题。
以下参考附图进行描述。
请参考图1和图2,本发明提供了一种指令判断方法,所述指令判断方法包括如下步骤:
S10基于数据生成子方法将历史的请求指令转化为第一链式数据。
S20分析每条所述第一链式数据的出现比率,得到数据过滤集。
S30基于所述数据生成子方法将当前的所述请求指令转化为第二链式数据。
以及,S40判断所述第二链式数据是否属于所述数据过滤集,若是,判断当前的所述请求指令为正常请求,否则,判断当前的所述请求指令为异常请求。
其中,所述数据生成子方法包括:
S110若所述请求指令的格式不符合URL编码规范,则将所述请求指令的格式转化为符合URL编码规范的格式。
S120基于分隔符对所述请求指令进行拆分得到字符串单元。
S130按照预设规则将每个所述字符串单元映射为一个标识符串。
以及,S140按照所述字符串单元在所述请求指令中的顺序,将所述标识符串连接为一条链式数据。
其中,所述第一链式数据和所述第二链式数据中的各节点仅在逻辑上存在链式的前后连接关系,并不限制存储所述第一链式数据和所述第二链式数据的容器必须为链表,本发明对于存储所述第一链式数据和所述第二链式数据的容器没有限制。步骤S110中,转化的方式包括:解密、解码、解压缩、转换转义字符等。不符合URL编码规范的字符串可能是因为不同站点所采用的具体的通讯协议不同所导致产生的,为了保证最终数据的有效性,可通过步骤S110将所述请求指令的格式均转化为符合URL编码规范的格式再进行后续操作。步骤S110的具体实现方式可以根据各站点的通讯协议的具体约定内容进行设置,在此不进行展开描述。历史的请求指令应当理解为在预设时间段内的全量数据,例如,在过去的一个月中产生的所有的请求指令。全量数据一方面可以较大概率地覆盖所有可能出现的正常请求以及异常请求,另一方面也保留了各种请求互相之间的比例关系,能够提高后续的数据过滤集的准确程度。
本实施例的设计原理如下:为了解决对特定字符、特定路径方式的依赖,对WEB请求指令进行一定程度的抽象。在处理逻辑中,对相似的站点目录进行了一定程度的归并。基于对WEB日志的理解:WEB站点请求的生成逻辑由开发人员在开发阶段编写完成,针对同一个接口的请求存在一定的关联。比如针对指定目录的访问必然会携带固定的属性名和具体值。属性名是固定的,具体值是通过同一的生成逻辑生成的。因此,发明人认为:正常情况下,站点日志请求是存在一定的内在逻辑的。
因此,可以通过请求指令中字符的分布情况进行数据分类,通过合理设置的分类规则,将异常请求和正常请求区分开来。同时这种分类方法实际上也是降低了输入数据的可能性,从而提高了所述指令判断方法的运行效率。若两条请求指令通过所述数据生成子方法转化为了相同的数据,则说明这两条请求存在一定的内在联系,同时为正常请求或者同时为异常请求的概率较高。若两条请求指令通过所述数据生成子方法转化为了不同的数据,则说明这两条请求可能存在决定性的不同,那么这两条数据是否是异常请求之间不存在相关性,这就从另一个方面提供了某条数据是否是异常请求的判断依据。
同时,本方法经过了一次映射处理,由于映射的具体细节上具有较大的自由度,使得恶意用户无法推测出本方法内部的运行逻辑,从而避免了因恶意用户的逆向分析得到内部分析逻辑后可以构造避开过滤功能的攻击语句。另外,由于不同的系统对应的历史请求也不同,本发明可以自适应地针对不同的历史请求数据构造不同的过滤数据集,因此自适应能力也有较大的提升,适用于几乎所有的站点,包括不存在固定分隔符的站点。
可以理解的,采用何种数据结构存储和调用所述数据过滤集,实际上并不影响本方法执行的结果,因此,本申请的不同实施例中,可以采用不同的方法存储和调用所述数据过滤集。请参考图3,在一较优的实施例中,所述数据过滤集2以树的数据格式进行存储和调用,所述第一链式数据和所述第二链式数据对应于所述数据过滤集的路径(图3中,标记1即代表了一种可能的路径),在数据结构领域的某些语境下,树的路径可能指从任意节点到任意节点的一个序列,在此约定,在本申请中,除非有特殊说明,路径的概念是指从根节点开始,并结束于叶子节点的一个序列。
如此配置,可以大大减少所述数据过滤集2的建立,以及路径查询的计算复杂度,在处理海量数据时,具有较好的时间和空间优势。
所述请求指令可以是WEB请求指令,但是本方法也可以适用于其他的一些具有请求指令的且与WEB相类似的系统。
在图3中,各节点的内容为标识符串,生成所述标识符串的具体逻辑在后文中介绍。
步骤S20分析每条所述第一链式数据的出现比率,得到数据过滤集的步骤包括:分析每条所述第一链式数据的出现比率;以及,按照如下标准建立所述数据过滤集:任意一条属于所述数据过滤集的所述第一链式数据的出现比率大于或者等于任意一条不属于所述数据过滤集的所述第一链式数据的出现比率;所述数据过滤集中的包含的所述第一链式数据的出现比率的总和大于或者等于预设比率;删除所述数据过滤集中的任意一条所述第一链式数据后,所述数据过滤集中剩余的所述第一链式数据的出现比率的总和小于所述预设比率。
为了实现上述技术效果,请参考图4,在一具体的实施例中,步骤S20分析每条所述第一链式数据的出现比率,得到数据过滤集的步骤包括:S201分析每条所述第一链式数据的出现比率;S202建立空的准备数据集;S203所述第一链式数据逐条加入所述准备数据集,直至所述准备数据集中包含的所述第一链式数据的出现比率的总和等于或者大于预设比率;其中,出现比率大的所述第一链式数据先于出现比率小的所述第一链式数据加入所述准备数据集;出现比率相同的两条所述第一链式数据可以采用任意的方式决定进入所述准备数据集的先后顺序,例如是按照出现时间排序,或者按照路径长度排序、按照字符串排序等等。以及,S204所述准备数据集被配置为所述数据过滤集。
按照S202~S204的步骤进行操作,所述数据过滤集就可以满足上述的建立标准。但是,建立所述数据过滤集的过程不限于S202~S204,例如,可以建立一个满的准备数据集,然后从里面按照出现比率从小到大逐条剔除所述第一链式数据。或者,采用其他等价的建立方式。
在本实施例中所述预设比率为97%,既可以过滤大量正常请求,又给了异常较大的变化空间。在一实施例中,可根据所述指令判断方法的实际运行效果预测最优预设比率并将所述预设比率设置为所述最优预设比例,也可以通过正态分布等常见模型指定所述预设比率。
为了便于理解,采用一具体的请求指令描述本方法的完整过程。
首先,假设存在如下一条WEB访问请求指令:
"/CONTENT%2Femc3%2FAboutEdit2.asp%3Fid%3D19%20and%201%3D2%20union%20select%20loginname%20from%20aspcms_user"。
需要进行http解码,部分情况下需要解码两次,得到如下请求:
"/CONTENT/emc3/sap1_AboutEdit2.asp?id=19and 1=2union selectloginname from aspcms_user"。
上述过程对应于步骤S110。
然后执行步骤S120。请参考图5,步骤S120所述基于分隔符对所述请求指令进行拆分得到字符串单元步骤包括:S1201基于所述分隔符将所述请求指令分割为至少一个准备字符串;S1202第一个出现的所述分隔符被直接配置为所述字符串单元;S1203除了最后一个所述准备字符串外,其余的所述准备字符串与自身之后的所述分隔符拼接得到所述字符串单元;以及,S1204最后一个所述准备字符串直接配置为所述字符串单元。
步骤S120的执行结果可以参考表1中的“拆分结果”列进行理解。
表1一请求指令的拆分示意表
序号 | 拆分结果 | 映射结果 |
1 | "/" | "/" |
2 | "CONTENT/" | "aucl/7" |
3 | "emc3/" | "lncl/4" |
4 | "AboutEdit2." | "lncl.10" |
5 | "asp?" | "alcl?3" |
6 | "id=" | "alcl?2" |
7 | "19" | "adcl?1" |
8 | "and" | "alcl?3" |
9 | "1=" | "adcl=1" |
10 | "2" | "adcl 1" |
11 | "Union" | "lucl 5" |
12 | "select" | "alcl 6" |
13 | "loginname" | "alcl 9" |
14 | "from" | "alcl 4" |
15 | "aspcms_" | "alcl_6" |
16 | "user" | "alcl4" |
在本实施例中,所述分隔符包括除大写字母、小写字母以及数字之外的所有其他字符。如此配置,最大程度提高所述指令判断方法的通用型。可以理解的,所述分隔符所包括的内容,在不同的应用场景下可以进行变通设置,例如,当确定应用场景仅限于某个特定的网站,且该网站具有特定的分隔符时,可以缩小所述分隔符包含的具体字符集合,以提高精度。随着技术的发展,将来也可能出现多个字符的组合用作分隔符的情况,因此,本申请中的所述分隔符应当广义理解,并不限于单个字符。
然后,进行映射,映射过程如下:S1301单个分隔符保持不变(对应于序号1的所述字符串单元);S1302其他的所述字符串单元根据包含的大小写字母和数字的不同获得第一标识;S1303其他的所述字符串单元根据所述分隔符获得第二标识;S1304其他的所述字符串单元根据特征字符数获得第三标识;S1305所述第一标识、所述第二标识和所述第三标识进行拼接,得到所述标识符串。
具体地,步骤S1302的规则可以按照表2的内容进行理解。
表2第一标识的映射规则
所述字符串单元所包含的字母情况 | 第一标识 |
全为小写字母 | "alcl" |
全为大写字母 | "aucl" |
全为数字 | "adcl" |
大小写字母混合 | "lucl" |
字母数字混合 | "lncl" |
步骤S1303的规则为:包含所述分隔符的所述字符串单元直接将所述分隔符作为所述第二标识,不包含所述分隔符的所述字符串单元则将空字符作为所述第二标识。
步骤S1304的规则为:直接将所述特征字符数作为所述第三标识,其中,所述特征字符数=所述字符串单元中的除数字和所述分隔符以外的字符的数量+B2N(所述字符串单元是否存在数字),B2N表示将布尔值转换为整数的运算,TRUE转换为1,FALSE转换为0。
步骤S1305的执行结果可以参考表1中的“映射结果”列进行理解。以序号为4的所述字符串单元"AboutEdit2."为例,首先,其包含了字母和数字,属于表2中的最后一种情况,因此,第一标识为"lncl",然后,其分隔符为".",因此,第二标识为".",除数字和分隔符外,"AboutEdit2."包含9个字符,而且,“所述字符串单元是否存在数字”的判断为TRUE,因此,所述特征字符数=9+B2N(TRUE)=9+1=10,所以,第三标识为10,最终得到的所述标识符串为"lncl"+"."+"10"="lncl.10"。
可以理解的,在不同的实施例中,步骤S1302~步骤S1304的具体规则是可以替换设置的。例如步骤S1302中,可以将“全为大写字母”和“全为小写字母”的情况映射成同一个所述第一标识。“字母数字混合”也可以拆分为“仅包含大写字母和数字”、“仅包含小写字母和数字”和“包含大小写字母和数字”这三种情况映射成三个不同的所述第一标识。所述第一标识的内容也可以自由更改和设置,例如将"alcl"修改为"abcd"等等。步骤S1302中,所述分隔符也可以替换为大小写字母,例如将"?"映射为"c"等等。步骤S1302中,也可以所述特征字符数为n映射为[n/2],其中“[]”表示向上取整计算。或者按照表3所示的规则进行映射。
表3一实施例中第三标识的映射规则
特征字符数 | 第三标识 |
1~3 | 1 |
4~5 | 2 |
6~10 | 3 |
11~15 | 4 |
…… | …… |
在步骤S1305中,也可以不进行字符串的拼接,而再一次采用映射获得所述标识符串。例如表4所示的映射规则。
表4第一标识、第二标识、第三标识映射标识符串规则
第一标识 | 第二标识 | 第三标识 | 标识符串 |
"alcl" | "." | "1" | "aa" |
"alcl" | "?" | "1" | "ab" |
"aucl" | "." | "1" | "ac" |
"aucl" | "?" | "1" | "ad" |
"alcl" | "." | "2" | "ae" |
"alcl" | "?" | "2" | "af" |
"aucl" | "." | "2" | "ag" |
"aucl" | "?" | "2" | "ah" |
…… | …… | …… | …… |
上面的映射规则仅仅是一些可能的映射规则,由于所述标识符串的目的是为了区分不同分类的路径,因此,只需要满足符合不同判断依据的所述字符串单元被映射为不同的所述标识符串即可,因此可以将上述规则归纳总结为如下方案:
所述预设规则包括第一规则、第二规则和第三规则中的至少一者。
所述第一规则为:基于所述字符串单元中是否包含所述分隔符映射所述标识符串;以及,基于所述字符串单元中包含的所述分隔符映射所述标识符串。
所述第二规则包括如下规则中的至少一者:基于所述字符串单元中是否包含大写字母映射所述标识符串;基于所述字符串单元中是否包含小写字母映射所述标识符串;以及,基于所述字符串单元中是否包含数字映射所述标识符串。在较优的实施例中,所述第二规则包括上述的所有规则。
所述第三规则为:基于所述字符串单元中的特征字符数映射所述标识符串。
若将上述的规则进行一定的具体限定,则又可以得到如下的方案。
所述预设规则包括第一规则、第二规则和第三规则中的至少一者。
所述第一规则为:包含所述分隔符的所述字符串单元和不包含所述分隔符的所述字符串单元映射至不同的所述标识符串;以及,包含的所述分隔符不同的所述字符串单元映射至不同的所述标识符串。
所述第二规则包括如下规则中的至少一者:包含大写字母的所述字符串单元和不包含大写字母的所述字符串单元映射至不同的所述标识符串;包含小写字母的所述字符串单元和不包含小写字母的所述字符串单元映射至不同的所述标识符串;以及,包含数字的所述字符串单元和不包含数字的所述字符串单元映射至不同的所述标识符串。
在较优的实施例中,所述第二规则包括上述的所有规则。
所述第三规则为:特征字符数不同的所述字符串单元中字符的数量映射不同的所述标识符串。
也就是说,映射规则只关注映射的结果是否相同或者不同,但是不关注具体映射为什么。
基于步骤S1301~步骤S1305的转换方式,所举例的请求指令,最终被转化为如下路径:"/"→"aucl/7"→"lncl/4"→"lncl.10"→"alcl?3"→"alcl=2"→"adcl 1"→"alcl3"→"adcl=1"→"adcl 1"→"lucl 5"→"alcl 6"→"alcl9"→"alcl 4"→"alcl_6"→"alcl4"。也即图3中所示的路径1。
事实上,上述的请求指令,为一个带有攻击意图的请求指令,因此,其对应的路径出现的频率很低(只有攻击者才会使用,普通用户不会使用,而普通用户的请求数量则是较多的),正如图3所示的,最终会被排除在所述数据过滤集2之外。而其他出现频率高的路径(如图3中右侧所示的一些路径),则会被保留在所述数据过滤集2之中,而且,从图3可以看出,常见的路径之间还具有一些公共部分,而带有攻击意图的请求指令则从深度为1的子节点起,就跟其他路径不再有公共部分。当然,上述分析仅仅是举例说明,可能也存在恶意请求和正常请求存在公共部分的情况。
本实施例还提供了一种可读存储介质,所述可读存储介质上存储有程序,所述程序执行时,运行上述的指令判断方法。所述可读存储介质因为存储了相应的程序代码,因此也能够解决现有技术中存在的问题。
所述可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备,例如可以是但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。这里所描述的程序可以从所述可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。所述程序可以是汇编指令、指令集架构指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码等。所述程序可以完全地在一个计算机设备上执行、或者在多个计算机设备上各执行一部分,多个计算机设备之间互相配合工作以实现完整的执行效果。多个计算机设备配合执行时,可以是同步的或者异步的,各计算机设备的执行时间的间隔无需限定,例如可以先执行步骤S10和步骤S20,保存所述数据过滤集,在几个月甚至更长时间之后,再执行步骤S30和步骤S40。
基于上述的指令判断方法,还可以设计一种网站维护的方法,包括:周期性地改变上述的指令判断方法中的参数或者映射规则生成新的过滤数据集,并应用新的过滤数据集过滤异常请求。上述的周期可以是:例如每三个月一次。如此配置,可以防止背后的过滤规则被猜透。
综上所述,本发明提供的指令判断方法及可读存储介质中,所述指令判断方法包括如下步骤:基于数据生成子方法将历史的请求指令转化为第一链式数据;分析每条所述第一链式数据的出现比率,得到数据过滤集;基于所述数据生成子方法将当前的所述请求指令转化为第二链式数据;以及,判断所述第二链式数据是否属于所述数据过滤集,若是,判断当前的所述请求指令为正常请求,否则,判断当前的所述请求指令为异常请求。其中,所述数据生成子方法包括:基于分隔符对所述请求指令进行拆分得到字符串单元;按照预设规则将每个所述字符串单元映射为一个标识符串;以及,按照所述字符串单元在所述请求指令中的顺序,将所述标识符串连接为一条链式数据。如此配置,通过所述数据生成子方法将所述请求指令进行了合理的转化,在保留了原有请求指令全部信息的前提下,简化了判断依据,并隐藏了背后的映射逻辑,在效率、机制、通用性和反逆向方面均有显著提升,解决了现有技术中存在的问题。
上述描述仅是对本发明较佳实施例的描述,并非对本发明范围的任何限定,本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于本发明技术方案的保护范围。
Claims (10)
1.一种指令判断方法,其特征在于,所述指令判断方法包括如下步骤:
基于数据生成子方法将历史的请求指令转化为第一链式数据;
分析每条所述第一链式数据的出现比率,得到数据过滤集;
基于所述数据生成子方法将当前的所述请求指令转化为第二链式数据;以及,
判断所述第二链式数据是否属于所述数据过滤集,若是,判断当前的所述请求指令为正常请求,否则,判断当前的所述请求指令为异常请求;
其中,所述数据生成子方法包括:
基于分隔符对所述请求指令进行拆分得到字符串单元;
按照预设规则将每个所述字符串单元映射为一个标识符串;以及,
按照所述字符串单元在所述请求指令中的顺序,将所述标识符串连接为一条链式数据。
2.根据权利要求1所述的指令判断方法,其特征在于,所述数据过滤集以树的数据格式进行存储和调用,所述第一链式数据和所述第二链式数据对应于所述数据过滤集的路径,所述数据过滤集的路径均从根节点开始,并结束于所述数据过滤集的叶子节点。
3.根据权利要求1所述的指令判断方法,其特征在于,所述请求指令为WEB请求指令;
在所述按照第一预设规则对所述请求指令进行拆分得到字符串单元之前,所述数据生成子方法还包括:若所述请求指令的格式不符合URL编码规范,则将所述请求指令的格式转化为符合URL编码规范的格式。
4.根据权利要求1所述的指令判断方法,其特征在于,分析每条所述第一链式数据的出现比率,得到数据过滤集的步骤包括:
分析每条所述第一链式数据的出现比率;以及,
按照如下标准建立所述数据过滤集:任意一条属于所述数据过滤集的所述第一链式数据的出现比率大于或者等于任意一条不属于所述数据过滤集的所述第一链式数据的出现比率;所述数据过滤集中的包含的所述第一链式数据的出现比率的总和大于或者等于预设比率;删除所述数据过滤集中的任意一条所述第一链式数据后,所述数据过滤集中剩余的所述第一链式数据的出现比率的总和小于所述预设比率。
5.根据权利要求4所述的指令判断方法,其特征在于,所述预设比率为97%。
6.根据权利要求1~5中任一项所述的指令判断方法,其特征在于,所述基于分隔符对所述请求指令进行拆分得到字符串单元步骤包括:
基于所述分隔符将所述请求指令分割为至少一个准备字符串;
第一个出现的所述分隔符被直接配置为所述字符串单元;
除了最后一个所述准备字符串外,其余的所述准备字符串与自身之后的所述分隔符拼接得到所述字符串单元;以及,
最后一个所述准备字符串直接配置为所述字符串单元。
7.根据权利要求6所述的指令判断方法,其特征在于,所述分隔符包括除大写字母、小写字母以及数字之外的所有其他字符。
8.根据权利要求6所述的指令判断方法,其特征在于,所述预设规则包括第一规则、第二规则和第三规则中的至少一者;
所述第一规则为:基于所述字符串单元中是否包含所述分隔符映射所述标识符串;以及,基于所述字符串单元中包含的所述分隔符映射所述标识符串;
所述第二规则包括如下规则中的至少一者:基于所述字符串单元中是否包含大写字母映射所述标识符串;基于所述字符串单元中是否包含小写字母映射所述标识符串;以及,基于所述字符串单元中是否包含数字映射所述标识符串;
所述第三规则为:基于所述字符串单元中的特征字符数映射所述标识符串,其中,所述特征字符数=所述字符串单元中的除数字和所述分隔符以外的字符的数量+B2N(所述字符串单元是否存在数字),B2N表示将布尔值转换为整数的运算,TRUE转换为1,FALSE转换为0。
9.根据权利要求6所述的指令判断方法,其特征在于,所述预设规则包括第一规则、第二规则和第三规则中的至少一者;
所述第一规则为:包含所述分隔符的所述字符串单元和不包含所述分隔符的所述字符串单元映射至不同的所述标识符串;以及,包含的所述分隔符不同的所述字符串单元映射至不同的所述标识符串;
所述第二规则包括如下规则中的至少一者:包含大写字母的所述字符串单元和不包含大写字母的所述字符串单元映射至不同的所述标识符串;包含小写字母的所述字符串单元和不包含小写字母的所述字符串单元映射至不同的所述标识符串;以及,包含数字的所述字符串单元和不包含数字的所述字符串单元映射至不同的所述标识符串;
所述第三规则为:特征字符数不同的所述字符串单元中字符的数量映射不同的所述标识符串,其中,所述特征字符数=所述字符串单元中的除数字和所述分隔符以外的字符的数量+B2N(所述字符串单元是否存在数字),B2N表示将布尔值转换为整数的运算,TRUE转换为1,FALSE转换为0。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有程序,所述程序执行时,运行如权利要求1~9中任一项所述的指令判断方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210850723.5A CN116108294A (zh) | 2022-07-19 | 2022-07-19 | 指令判断方法及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210850723.5A CN116108294A (zh) | 2022-07-19 | 2022-07-19 | 指令判断方法及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116108294A true CN116108294A (zh) | 2023-05-12 |
Family
ID=86260378
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210850723.5A Pending CN116108294A (zh) | 2022-07-19 | 2022-07-19 | 指令判断方法及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116108294A (zh) |
-
2022
- 2022-07-19 CN CN202210850723.5A patent/CN116108294A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10324909B2 (en) | Omega names: name generation and derivation utilizing nested three or more attributes | |
CN107038207B (zh) | 一种数据查询方法、数据处理方法及装置 | |
US20140123303A1 (en) | Dynamic data masking | |
WO2017044180A1 (en) | Identifying software components in a software codebase | |
CN112685433B (zh) | 元数据更新方法、装置、电子设备及计算机可读存储介质 | |
JP2018097846A (ja) | Api学習 | |
US8745096B1 (en) | Techniques for aggregating data from multiple sources | |
WO2007144853A2 (en) | Method and apparatus for performing customized paring on a xml document based on application | |
CN106412086A (zh) | 一种利用协议描述文件自动生成通信代码的方法及系统 | |
CN101794318A (zh) | Url解析方法及设备 | |
CN112860263B (zh) | 一种基于智能合约知识图谱的合约缺陷检测方法 | |
CN112925954B (zh) | 用于在图数据库中查询数据的方法和装置 | |
CN104320312A (zh) | 网络应用安全测试工具及模糊测试用例生成方法和系统 | |
WO2023103339A1 (zh) | 一种数据转换方法及装置 | |
CN110413711B (zh) | 一种差异数据获取方法及其存储介质 | |
CN112256927A (zh) | 基于属性图的知识图谱数据处理方法和装置 | |
CN108959294B (zh) | 一种访问搜索引擎的方法和装置 | |
WO2023092580A1 (zh) | 页面显示方法、装置、存储介质及电子设备 | |
CA2815153A1 (en) | Document order management via binary tree projection | |
CN106020923A (zh) | SELinux策略的编译方法及系统 | |
CN117632999A (zh) | 基于sql的代码转换方法、装置、设备及介质 | |
CN102902538A (zh) | 移动互联网智能终端应用中间件安全开发方法 | |
CN112883088B (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN116467047A (zh) | 针对容器配置合规性的检测方法、装置、存储介质及终端 | |
CN116108294A (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 |