CN105184150B - 一种语句预处理方法、装置以及语句的解释方法、装置 - Google Patents
一种语句预处理方法、装置以及语句的解释方法、装置 Download PDFInfo
- Publication number
- CN105184150B CN105184150B CN201510537379.4A CN201510537379A CN105184150B CN 105184150 B CN105184150 B CN 105184150B CN 201510537379 A CN201510537379 A CN 201510537379A CN 105184150 B CN105184150 B CN 105184150B
- Authority
- CN
- China
- Prior art keywords
- sentence
- data
- pretreated
- statement type
- code
- 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.)
- Active
Links
Classifications
-
- 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/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明实施例提供了一种语句预处理方法、装置以及解释方法、装置。包括:确定待执行语句;所述语句包括数据或者代码,所述数据包括外界输入的数据;包括数据的所述语句的语句类型为数据类,包括代码的所述语句的语句类型为代码类;根据所述待执行语句的语句类型对应的预制专用修改规则,对所述待执行语句进行修改;将修改后的语句转给解释装置;以便所述解释装置根据预制的解释规则进行解释。通过本发明实施例,将不同的语句类型的按照不同的方式进行修改,实现不同语句类型的编码异构,降低“注入”、“溢出”被黑客利用的可能性。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种语句预处理方法、装置以及解释方法、装置。
背景技术
目前,“注入”和“溢出”问题是黑客攻击计算机的主要手段。
“注入”:
随着B/S模式应用开发的发展,使用该模式编写程序的程序员越来越来越多,但是由于程序员的水平参差不齐,相当大一部分应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想要知的数据,这个就是所谓的SQLinjection,即sql“注入”式攻击。
脚本“注入”攻击者把SQL(Structured Query Language,结构化查询语言)命令插入到WEB表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令,在某些表单中,用户输入的内容直接用来构造动态的SQL命令,或作为存储过程的输入参数,从而获取想得到的密码或其它服务器上的资料。
“溢出”:
缓冲区“溢出”是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量“溢出”的数据覆盖在合法数据上,理想的情况是程序检查数据长度并不允许输入超过缓冲区长度的字符,但是绝大多数程序都会假设数据长度总是与所分配的储存空间相匹配,这就为缓冲区“溢出”埋下隐患。操作系统所使用的缓冲区又被称为“堆栈”。在各个操作进程之间,指令会被临时储存在“堆栈”当中,“堆栈”也会出现缓冲区“溢出”。
在黑客频频攻击、在系统漏洞层出不穷的今天,网络管理员、系统管理员虽然在服务器的安全上都下了不少功夫:诸如,及时的打上系统安全补丁、进行一些常规的安全配置,但是仍然不太可能每台服务器都会在第一时间内给系统打上全新补丁。
所以迫切本领域技术人员解决的技术问题就在于,如何降低“注入”、“溢出”被黑客利用的可能性。
发明内容
本发明的实施例提供了一种语句预处理方法、装置以及解释方法、装置,通过将不同的语句类型的按照不同的方式进行修改,实现不同语句类型的编码异构,降低“注入”、“溢出”被黑客利用的可能性。
为了实现上述目的,本发明采取了如下技术方案。
一种语句预处理方法,包括:
确定待执行语句;所述语句包括数据或者代码,所述数据包括外界输入的数据;包括数据的所述语句的语句类型为数据类,包括代码的所述语句的语句类型为代码类;
根据所述待执行语句的语句类型对应的预制专用修改规则,对所述待执行语句进行修改;
将修改后的语句转给解释装置;以便所述解释装置根据预制的解释规则进行解释。
可选的,所述根据所述待执行语句的语句类型对应的预制专用修改规则进行修改包括:
确定所述待执行语句的语句类型对应的专用间隔字符;
将所述专用间隔字符插入到所述待执行语句的预设位置处。
可选的,所述根据所述待执行语句的语句类型对应的预制专用修改规则进行修改包括:
确定所述待执行语句的语句类型对应的专用字符集;
根据所述专用字符集将所述待执行语句进行转换。
可选的,所述专用字符集包括:
通过数码类型来区分所述待执行语句的语句类型;通过所述数码的个数来区分不同的语句。
一种语句预处理装置,包括:
待执行语句确定单元,用于确定待执行语句;所述语句包括数据或者代码,所述数据包括外界输入的数据;包括数据的所述语句的语句类型为数据类,包括代码的所述语句的语句类型为代码类;
待执行语句修改单元,用于根据所述待执行语句的语句类型对应的预制专用修改规则,对所述待执行语句进行修改;
待执行语句传输单元,用于将修改后的语句转给解释装置;以便所述解释装置根据预制的解释规则进行解释。
可选的,所述待执行语句修改单元包括:
专用间隔字符确定子单元,用于确定所述待执行语句的语句类型对应的专用间隔字符;
专用间隔字符插入子单元,用于将所述专用间隔字符插入到所述待执行语句的预设位置处。
可选的,所述待执行语句修改单元包括:
专用数据字符集确定子单元,用于确定所述待执行语句的语句类型对应的专用字符集;
转换子单元,用于根据所述专用字符集将所述待执行语句进行转换。
一种语句的解释方法,包括:
确定经过预处理的语句;所述语句包括数据或者代码,所述数据包括外界输入的数据;包括数据的所述语句的语句类型为数据类,包括代码的所述语句的语句类型为代码类;所述语句类型对应有专用修改规则;
判断所述经过预处理的语句所包含的专用修改规则;根据所述专用修改规则确定所述经过预处理的语句的语句类型;
根据所述经过预处理的语句的语句类型对应的预制解释规则对所述语句进行解释。
可选的,所述判断所述经过预处理的语句所包含的专用修改规则;根据所述专用修改规则确定所述经过预处理的语句的语句类型,包括:
判断所述经过预处理的语句的预设位置包含的专用间隔字符;
根据所述专用间隔字符确定所述经过预处理的语句的语句类型。
可选的,所述判断所述经过预处理的语句所包含的专用修改规则;根据所述专用修改规则确定所述经过预处理的语句的语句类型,包括:
判断所述经过预处理的语句包含的字符所属的字符集;
根据所述数字符集确定所述经过预处理的语句的语句类型。
可选的,所述根据所述数字符集确定所述经过预处理的语句的语句类型包括:
判断所述字符集的数码,确定所述数码对应的语句类型为所述经过预处理的语句的语句类型。
可选的,所述方法还包括:
将所述经过预处理的语句还原为原始语句。
可选的,所述代码包括程序指针,所述程序指针指向所述数据的存储空间,所述方法还包括:
建立程序指针与所述程序指针指向的数据空间的对应标记;
当所述程序指针指向的数据空间的数据被释放时,将所述数据空间标记为锁定;其中,所述标记为锁定的数据空间中的数据不可再次写入。
可选的,所述方法还包括:
当所述程序指针被释放时,检查所述程序指针所指向的数据空间是否没有指针指向该数据空间,且该数据空间标记为锁定;
若是,将所述程序指针指向的数据空间标记为可写入。
一种语句的解释装置,包括:
语句确定单元,用于确定经过预处理的语句;所述语句包括数据或者代码,所述数据包括外界输入的数据;包括数据的所述语句的语句类型为数据类,包括代码的所述语句的语句类型为代码类;所述语句类型对应有专用修改规则;
语句类型判断单元,用于判断所述经过预处理的语句所包含的专用修改规则;根据所述专用修改规则确定所述经过预处理的语句的语句类型;
解释单元,用于根据所述经过预处理的语句的语句类型对应的预制解释规则对所述语句进行解释。
可选的,所述语句类型判断单元包括:
专用间隔字符判断子单元,用于判断所述经过预处理的语句的预设位置包含的专用间隔字符;
第一语句类型确定子单元,用于根据所述专用间隔字符确定所述经过预处理的语句的语句类型。
可选的,所述语句类型判断单元包括:
字符集判断子单元,用于判断所述经过预处理的语句包含的字符所属的字符集;
第二语句类型确定子单元,用于根据所述数字符集确定所述经过预处理的语句的语句类型。
可选的,所述第二语句类型确定子单元,还用于:
判断所述字符集的数码,确定所述数码对应的语句类型为所述经过预处理的语句的语句类型。
可选的,所述装置还包括:
语句还原单元,用于将所述经过预处理的语句还原为原始语句。
可选的,所述代码包括程序指针,所述程序指针指向所述数据的存储空间,所述装置还包括:
数据空间标记单元,用于,
建立程序指针与所述程序指针指向的数据空间的对应标记;
当所述程序指针指向的数据空间的数据被释放时,将所述数据空间标记为锁定;其中,所述标记为锁定的数据空间中的数据不可再次写入;
或者,
当所述程序指针被释放时,检查所述程序指针所指向的数据空间是否没有指针指向该数据空间,且该数据空间标记为锁定;
若是,将所述程序指针指向的数据空间标记为可写入。
由上述本发明的实施例提供的技术方案可以看出,通过本发明实施例,通过在待执行语句进行解释之前,对语句根据预制规则进行修改,使得数据类型的语句与代码类型的语句编码异构,使得解释器能够通过不同类型语句被修改后的特点(修改方式),确定出语句的类型,进而根据该语句类型的预定方式进行解释,这样,能够在编码层面将不同类型的语句区分开,使得数据类型的语句只可能按照数据类型语句的解释方式解释,代码类型的语句只能够按照代码类语句的解释方式解释。即使非法用户通过“注入”的方式将代码隐藏在数据类型的语句中,隐藏代码也不能够执行,只能够以数据的形式被解释,或者,非法用户通过“溢出”的方式攻击时,由于该种方式也是将代码隐藏在数据类型语句中,即使隐藏的代码“溢出”,由于该’溢出”的代码已经被修改,通过修改后的标记解释器变可以判断该“溢出”的代码为数据类语句,只能按照数据类语句的解释方式解释,“溢出”的代码依然不会执行,进而,降低了降低“注入”、“溢出”被黑客利用的可能性,提高了计算机的安全保障。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的一种语句预处理方法的处理流程图;
图2为本发明实施例二提供的一种语句预处理装置的结构示意图;
图3为本发明实施例三提供的一种语句的解释方法的处理流程图;
图4为本发明实施例四提供的一种语句的解释装置的结构示意图。
具体实施方式
下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
用户在使用应用程序时,会输入一些语句,或者,应用程序与计算机系统、数据库之间也会有一些数据的交互,例如,数据类:通过浏览器浏览网页时会输入网址,通过即时通讯软件时会输入聊天内容;可运行的代码类:程序自身运行所需要的代码,具有权限的应用程序也会通过一些代码来访问数据库,利用SQL存取数据以及查询、更新和管理关系数据库系统。由于现有的运算构架数据部分和程序部分的编码方式完全相同,数据类语句被非法用户利用,变成特殊构造的语句,一般这类语句带有可运行程序,也就是说通过浏览器浏览网页时输入的网址的编码方式与浏览器利用SQL存取数据以及查询、更新和管理关系数据库系统时的编码方式是完全相同的,所以通过特殊的构造方法就可以通过非法代码将传入数据执行,从而获得系统权限或达到攻击系统的目的,也就是说具有特殊构造的网址有可能会实现数据库查询代码的功能,进而获得某些他想得知的数据。
本申请的发明人意识到这一点,通过将不同的语句类型按照不同的方式进行修改,实现不同语句类型的编码异构,也就是说可以通过浏览器浏览网页时会输入网址与利用SQL存取数据以及查询、更新和管理关系数据库系统时数据的语句分别采用不同的修改方式,这样以保证网址只能够被用于浏览网页,查询代码只能被用于查询数据,即使数据“注入”或者“溢出”,由于不同的语句类型的代码是不同的所以“溢出”的特殊构造的网址进行数据库查询时,会产生数据异常或者不能够被识别的情况,这样大大的降低了数据“注入”或者“溢出”被黑客利用造成危害的风险。
为便于对本发明实施例的理解,下面将结合附图以几个具体实施例为例做进一步的解释说明,且各个实施例并不构成对本发明实施例的限定。
实施例一
参见图1所示,图1是本实施例提供的一种数据输入预处理方法的流程图。包括如下的处理步骤:
S110、确定待执行语句;所述语句包括数据或者代码,所述数据包括外界输入的数据;包括数据的所述语句的语句类型为数据类,包括代码的所述语句的语句类型为代码类。
用户在使用应用程序时会输入一些数据,例如,QQ聊天输入的聊天内容、浏览网页输入的网址,等等,将这些数据归类为数据类语句。程序还需要一些可运行的代码,来实现其部分功能,将这些可运行的代码归类为代码类语句。
另外,程序一般包括,程序自身数据以及程序执行代码,程序自身数据也有可能由于非法用户的破坏,产生“溢出”情况,所以,为了将这类数据与执行代码区分开,可以将程序自身数据归类为数据类语句,将程序的执行代码归类为代码类。
本发明实施例在具体实现过程中,还可以通过语句的来源来区分该语句的类型,例如,用户在使用应用程序时通过特定的接口输入的都确定为数据类语句,其他确定为代码类语句。还可以通过语句的特征来区分,例如,包含指令的语句确定为代码类语句,其他语句确定为数据类语句。
其中,具体的数据类型的区分方式可以有多种,这里不再一一赘述。
一般情况下,代码需要经过解释器进行解释才能够运行,所以可以在代码进行解释之前进行修改。例如,可以在用户在使用应用程序时会输入数据后,直接将这些数据进行预处理,并且是按照数据类语句的处理方式进行处理。
S120、根据所述待执行语句的语句类型对应的预制专用修改规则,对所述待执行语句进行修改。
本发明实施例在具体实施过程中,在接收到用户通过应用程序输入的语句时,可以先根据预制的专用的修改规则进行修改,将该语句修改为具有特殊构造的语句。也可以在代码被解释运行前对代码根据预制的专用的修改规则进行修改,将该代码修改为特殊构造的语句。在具体实施过程中,可以是仅对数据类的语句进行了修改,或者仅对代码类的语句进行了修改,当然也可以对数据类和代码类都进行修改。
本发明实施例在具体实施过程中,具体的专用修改规则可以有如下实现方式。
方式一
根据不同的语句类型设置不同的专用间隔字符,语句类型对应的专用间隔字符插入到预先规定好的位置处。例如,将数据类语句的间隔字符设定为“00”,将代码类的语句的间隔字符设定为“FF”;那么,可以将数据类型的语句的前段插入“00”,尾端也插入“00”;还可以将代码类的语句的前端插入“FF”,尾端插入“FF”。这样,解释器通过确定前端以及尾端的字符就可以判断该语句与数据类还是代码类,即使数据类语句“溢出”或者被“注入”,不会将数据类语句当做代码进行解释。
方式二
根据不同的语句类型设置不同的专用字符集,将语句按照语句类型转换为用字符集中的字符表示的语句。具体的,可以通过数码类型来区分语句的语句类型;通过数码的个数来区分不同的语句,例如,所有的“0”代表数据类语句,通过“1”来分割,数据类语句在解释时只识别语句中的“0”,并且通过被“1”分割的一组“0”的个数来区分具体的词或指令,也就是说,可以用8个“0”代表一个指令,用9个“0”代表另一指令;同理,可以用所有的“1”代表代码,分割使用“0”,还可以限定最短长度,例如,最短代表指令的字符长度8位起,也就是说8位以下为错误语句或者不被识别。这样,可以有效的区分数据类语句以及代码类语句,即使数据类语句出现“溢出”或者被“注入”,那么“溢出”或者“注入”的语句也会依然被确定为数据类语句,或者是错误的语句或者不被识别。
本发明实施例在具体实施过程中具体的专用修改规则的实现方式还有多种,这里不再一一介绍。
S130、将修改后的语句转给解释装置;以便所述解释装置根据预制的解释规则进行解释。
经过修改的语句还要用于自己本来的用途,所及需要将修改后的语句转交给解释装置进行解释,也就是交给解释装置进行解释。
实施例二
该实施例提供了一种语句预处理装置,其具体实现结构如图2所示,具体可以包括如下的模块:
待执行语句确定单元210,用于确定待执行语句;所述语句包括数据或者代码,所述数据包括外界输入的数据;包括数据的所述语句的语句类型为数据类,包括代码的所述语句的语句类型为代码类;
待执行语句修改单元220,用于根据所述待执行语句的语句类型对应的预制专用修改规则,对所述待执行语句进行修改;
待执行语句传输单元230,用于将修改后的语句转给解释装置;以便所述解释装置根据预制的解释规则进行解释。
进一步的,为了支持不同的修改方式,待执行语句修改单元220包括:
专用间隔字符确定子单元,用于确定所述待执行语句的语句类型对应的专用间隔字符;
专用间隔字符插入子单元,用于将所述专用间隔字符插入到所述待执行语句的预设位置处。
或者,
专用数据字符集确定子单元,用于确定所述待执行语句的语句类型对应的专用字符集;
转换子单元,用于根据所述专用字符集将所述待执行语句进行转换。
用本发明实施例的装置进行语句预处理的具体过程与前述实施例一中的方法实施例类似,可相互参照理解此处不再赘述。
实施例三
参见图3所示,图3是本实施例提供的一种语句的解释方法的流程图。包括如下的处理步骤:
S310、确定经过预处理的语句;所述数据包括外界输入的数据;包括数据的所述语句的语句类型为数据类,包括代码的所述语句的语句类型为代码类;所述语句类型对应有专用修改规则。
通过实施例一预处理的语句会转给本发明实施例进行解释。
S320、判断所述经过预处理的语句所包含的专用修改规则;根据所述专用修改规则确定所述经过预处理的语句的语句类型。
经过实施例一提供的语句处理方法处理过的语句,会进行一些修改,当然,具体的修改规则是预先制定好的,也就是说实施例一具体对语句进行何种修改以及对何种语句进行了修改,本发明实施例是知道的,例如,通过实施例一中提供的技术手段,将数据类的语句前端以及后端都被插入了“00”,所以数据类的语句对应的修改规则就是语句前的端以及后端都被插入了“00”,在本发明实施例中预先知道经过实施例一处理过的数据类的语句的修改规则是在语句前的端以及后端都插入“00”,也就是说,本发明实施例知道经过实施例一提供的语句处理方法处理过的语句具有怎样的特征。
由于根据实施例一预处理过的语句,对于不同的语句类型的语句的处理方式是不同的,例如,可能是仅对数据类的语句进行了修改,或者仅对代码类的语句进行了修改,也可能是对数据类的语句以及代码类的语句都进行了修改,而且被修改的每类语句都是按照专用的修改规则进行修改的,所以可以根据语句的专用修改规则进而确定语句的类型。
其中,本发明实施例在具体实施过程中,针对实施例一中的不同专用修改规则,有对应的判断方式。
对于实施例一中用间隔字符来区分语句类别的方式,在本发明实施例中,可以通过判断待处理的语句中对应位置包含的专用字符,根据专用字符来确定对应语句的语句类型。例如,在实施例一中,将数据类的语句前端以及后端都被插入了“00”,将代码类的语句前端以及后端都被插入了“11”。那么,在本发明实施例中,在确定待处理的语句后,确定该待处理语句的前端以及后端的字符:如果是“00”,那么确定该待处理语句为数据类语句;如果是“11”,那么确定该待处理语句为代码类语句。
对于实施例一中将不同类型的语句根据不同的专用字符集进行转换的,在本发明实施例中,可以通过判断待处理语句中包含的字符所述的字符集,根据字符集来确定具体的语句类型。进一步,对于用数码来区分语句类型的修改,需要判断语句用于表示数据或者代码的数码,根据数码来确定具体的语句类型。例如,在实施例一中,用所有的“0”代表数据类语句,通过“1”来分割;用所有的“1”代表代码,分割使用“0”;最短表指令的字符长度8位起,。那么,在本发明实施例中,在确定待处理的语句后,确定连续出现同一字符的多余8个的字符是“0”还是“1”;如果是“0”,那么确定该待处理语句为数据类语句;如果是“1”,那么确定该待处理语句为代码类语句。
另外,对于在实施例一中仅对数据类的语句进行了修改的情况,而代码类语句未做修改,那么,在本发明实施例中,对于未做修改的语句可以依照现有技术中的方法进行解释,或者,仅对代码类的语句进行了修改,而数据类语句未做修改,那么,在本发明实施例中,对于未做修改的语句可以依照现有技术中的方法进行解释。
S330、根据所述经过预处理的语句的语句类型对应的预制解释规则对所述语句进行解释。
在确定出待处理语句的语句类型后,根据预制的解释规则将语句解释成可执行代码或者数据。由于,经过实施例一中提供的方法预处理后的语句按照特定的规则进行了修改,所以在解释时需要根据修改规则相对应的解释规则进行解释,其中,本实施例中的预制解释规则与实施例一中的专用修改规则是相对应的,也就是说,本发明实施例预存有若干解释规则,用于解释经过实施例一中的方法处理过的语句。例如,在实施例一中,将数据类的语句前端以及后端都被插入了“00”,将代码类的语句前端以及后端都被插入了“11”。那么,在本发明实施例中,待处理语句的前端以及后端都是“00”,根据语句前端以及后端的字符确定出语句类型为数据类,那么根据预存的解释规则,进行解释,且最终解释的结果一定是数据。
本发明实施例再具体实施过程中,执行解释程序后进行存储输出时为了节约空间可以还原为原来的数据编码或者代码编码。
另外,本发明实施例在具体实施过程中,考虑到“代码包括程序指针,程序指针指向数据的存储空间”这一特点。为了进一步的降低数据由于“溢出”作为代码使用的情况,还可以建立程序指针与该程序指针指向的数据空间的对应标记;当程序指针指向的数据空间的数据被释放时,将对应的数据空间标记为锁定,具有锁定标记的数据空间不可再次写入或者执行代码。这样,当“溢出”情况发生时,程序指针被控制指向数据中某段隐藏的程序代码时,由于该段数据已经被释放,数据空间的标记变成了锁定状态,所以,不能够再次被写入或者执行,所以降低了“溢出”情况发生所造成的风险,同时,由于数据被释放的数据空间不能够再次写入,从而也降低了非法用户向数据空间内写入进而造成“溢出”的情况。
进一步的,当程序指针被释放时,检查该程序指针所指向的数据空间是否标记为锁定;若是,将该程序指针指向的数据空间标记为可写入状态。
例如,将原间隔为“00 xx 00 xx”的数据空间释放后标记为另外一个间隔标记“1100 11 00”,该标记代表该数据空间已被锁定,这样即使指针再次指向这个位置,也会识别为数据区释放并已锁定不可以再次写入,出现异常。之后指针释放时会检查是否没有指针指向对应的数据区且数据区已经处于锁定状态,如满足条件则标记为“00 00 00 00”,这个标记代表这个数据空间则被彻底释放可以再次写入。
实施例四
该实施例提供了一种语句的解释装置,其具体实现结构如图4所示,具体可以包括如下的模块:
语句确定单元410,用于确定经过预处理的语句;所述语句包括数据或者代码,所述数据包括外界输入的数据;包括数据的所述语句的语句类型为数据类,包括代码的所述语句的语句类型为代码类;所述语句类型对应有专用修改规则;
语句类型判断单元420,用于判断所述经过预处理的语句所包含的专用修改规则;根据所述专用修改规则确定所述经过预处理的语句的语句类型;
解释单元430,用于根据所述经过预处理的语句的语句类型对应的预制解释规则对所述语句进行解释。
本发明实施例在具体实施过程中,为了支持不同的修改方式,语句类型判断单元420包括:
专用间隔字符判断子单元,用于判断所述经过预处理的语句的预设位置包含的专用间隔字符;
第一语句类型确定子单元,用于根据所述专用间隔字符确定所述经过预处理的语句的语句类型。
或者,在另一种实现方式下,
字符集判断子单元,用于判断所述经过预处理的语句包含的字符所属的字符集;
第二语句类型确定子单元,用于根据所述数字符集确定所述经过预处理的语句的语句类型。
进一步的,第二语句类型确定子单元,还用于,判断所述字符集的数码,确定所述数码对应的语句类型为所述经过预处理的语句的语句类型。
另外,为了降低存储输出时的空间,本发明实施例还可以包括:
语句还原单元,用于将所述经过预处理的语句还原为原始语句。
为了进一步的降低数据由于“溢出”作为代码使用的情况,本发明实施例还可以包括:
数据空间标记单元,用于,
建立程序指针与所述程序指针指向的数据空间的对应标记;
当所述程序指针指向的数据空间的数据被释放时,将所述数据空间标记为锁定;其中,所述标记为锁定的数据空间中的数据不可再次写入;
或者,
当所述程序指针被释放时,检查所述程序指针所指向的数据空间是否没有指针指向该数据空间,且该数据空间标记为锁定;
若是,将所述程序指针指向的数据空间标记为可写入。
用本发明实施例的装置进行解释的具体过程与前述实施例三中的方法实施例类似,可相互参照理解此处不再赘述。
综上所述,通过本发明实施例,通过将待执行语句进行解释之前,对语句根据预制规则进行修改,使得数据类型的语句与代码类型的语句编码异构,使得解释器能够通过不同类型语句被修改后的特点(修改方式),确定出语句的类型,进而根据该语句类型的预定方式进行解释,这样,能够在编码层面将不同类型的语句区分开,使得数据类型的语句只可能按照数据类型语句的解释方式解释,代码类型的语句只能够按照代码类语句的解释方式解释。即使非法用户通过“注入”的方式将代码隐藏在数据类型的语句中,隐藏代码也不能够执行,只能够以数据的形式被解释,或者,非法用户通过“溢出”的方式攻击时,由于该种方式也是将代码隐藏在数据类型语句中,即使隐藏的代码“溢出”,由于该“溢出”的代码已经被修改,通过修改后的标记解释器变可以判断该“溢出”的代码为数据类语句,只能按照数据类语句的解释方式解释,“溢出”的代码依然不会执行,进而,降低了降低“注入”、“溢出”被黑客利用的可能性,提高了计算机的安全保障。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (16)
1.一种语句预处理方法,其特征在于,包括:
确定待执行语句;所述语句包括数据或者代码,所述数据包括外界输入的数据;包括数据的所述语句的语句类型为数据类,包括代码的所述语句的语句类型为代码类;
根据所述待执行语句的语句类型对应的预制专用修改规则,对所述待执行语句进行修改,具体包括:确定所述待执行语句的语句类型对应的专用字符集,根据所述专用字符集将所述待执行语句进行转换;
将修改后的语句转给解释装置;以便所述解释装置根据预制的解释规则进行解释。
2.根据权利要求1所述的语句预处理方法,其特征在于,所述专用字符集包括:
通过数码类型来区分所述待执行语句的语句类型;通过所述数码的个数来区分不同的语句。
3.一种语句预处理装置,其特征在于,包括:
待执行语句确定单元,用于确定待执行语句;所述语句包括数据或者代码,所述数据包括外界输入的数据;包括数据的所述语句的语句类型为数据类,包括代码的所述语句的语句类型为代码类;
待执行语句修改单元,用于根据所述待执行语句的语句类型对应的预制专用修改规则,对所述待执行语句进行修改,所述待执行语句修改单元包括:专用数据字符集确定子单元和转换子单元,所述专用数据字符集确定子单元用于确定所述待执行语句的语句类型对应的专用字符集;所述转换子单元用于根据所述专用字符集将所述待执行语句进行转换;
待执行语句传输单元,用于将修改后的语句转给解释装置;以便所述解释装置根据预制的解释规则进行解释。
4.一种语句的解释方法,其特征在于,包括:
确定经过预处理的语句;所述语句包括数据或者代码,所述数据包括外界输入的数据;包括数据的所述语句的语句类型为数据类,包括代码的所述语句的语句类型为代码类;所述语句类型对应有专用修改规则;
判断所述经过预处理的语句所包含的专用修改规则;根据所述专用修改规则确定所述经过预处理的语句的语句类型;
根据所述经过预处理的语句的语句类型对应的预制解释规则对所述语句进行解释。
5.根据权利要求4所述的语句的解释方法,其特征在于,所述判断所述经过预处理的语句所包含的专用修改规则;根据所述专用修改规则确定所述经过预处理的语句的语句类型,包括:
判断所述经过预处理的语句的预设位置包含的专用间隔字符;
根据所述专用间隔字符确定所述经过预处理的语句的语句类型。
6.根据权利要求4所述语句的解释方法,其特征在于,所述判断所述经过预处理的语句所包含的专用修改规则;根据所述专用修改规则确定所述经过预处理的语句的语句类型,包括:
判断所述经过预处理的语句包含的字符所属的字符集;
根据所述字符集确定所述经过预处理的语句的语句类型。
7.根据权利要求6所述语句的解释方法,其特征在于,所述根据所述字符集确定所述经过预处理的语句的语句类型包括:
判断所述字符集的数码,确定所述数码对应的语句类型为所述经过预处理的语句的语句类型。
8.根据权利要求4所述的语句的解释方法,其特征在于,所述方法还包括:
将所述经过预处理的语句还原为原始语句。
9.根据权利要求4至8任意一项所述的语句的解释方法,其特征在于,所述代码包括程序指针,所述程序指针指向所述数据的存储空间,所述方法还包括:
建立程序指针与所述程序指针指向的数据空间的对应标记;
当所述程序指针指向的数据空间的数据被释放时,将所述数据空间标记为锁定;其中,所述标记为锁定的数据空间中的数据不可再次写入。
10.根据权利要求9所述的语句的解释方法,其特征在于,所述方法还包括:
当所述程序指针被释放时,检查所述程序指针所指向的数据空间是否没有指针指向该数据空间,且该数据空间标记为锁定;
若是,将所述程序指针指向的数据空间标记为可写入。
11.一种语句的解释装置,其特征在于,包括:
语句确定单元,用于确定经过预处理的语句;所述语句包括数据或者代码,所述数据包括外界输入的数据;包括数据的所述语句的语句类型为数据类,包括代码的所述语句的语句类型为代码类;所述语句类型对应有专用修改规则;
语句类型判断单元,用于判断所述经过预处理的语句所包含的专用修改规则;根据所述专用修改规则确定所述经过预处理的语句的语句类型;
解释单元,用于根据所述经过预处理的语句的语句类型对应的预制解释规则对所述语句进行解释。
12.根据权利要求11所述的语句的解释装置,其特征在于,所述语句类型判断单元包括:
专用间隔字符判断子单元,用于判断所述经过预处理的语句的预设位置包含的专用间隔字符;
第一语句类型确定子单元,用于根据所述专用间隔字符确定所述经过预处理的语句的语句类型。
13.根据权利要求11所述的语句的解释装置,其特征在于,所述语句类型判断单元包括:
字符集判断子单元,用于判断所述经过预处理的语句包含的字符所属的字符集;
第二语句类型确定子单元,用于根据所述字符集确定所述经过预处理的语句的语句类型。
14.根据权利要求13所述的语句的解释装置,其特征在于,所述第二语句类型确定子单元,还用于:
判断所述字符集的数码,确定所述数码对应的语句类型为所述经过预处理的语句的语句类型。
15.根据权利要求11所述的语句的解释装置,其特征在于,所述装置还包括:
语句还原单元,用于将所述经过预处理的语句还原为原始语句。
16.根据权利要求11-15任意一项所述的语句的解释装置,其特征在于,所述代码包括程序指针,所述程序指针指向所述数据的存储空间,所述装置还包括:
数据空间标记单元,用于,
建立程序指针与所述程序指针指向的数据空间的对应标记;
当所述程序指针指向的数据空间的数据被释放时,将所述数据空间标记为锁定;其中,所述标记为锁定的数据空间中的数据不可再次写入;
或者,
当所述程序指针被释放时,检查所述程序指针所指向的数据空间是否没有指针指向该数据空间,且该数据空间标记为锁定;
若是,将所述程序指针指向的数据空间标记为可写入。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510537379.4A CN105184150B (zh) | 2015-08-28 | 2015-08-28 | 一种语句预处理方法、装置以及语句的解释方法、装置 |
PCT/CN2016/097079 WO2017036368A1 (zh) | 2015-08-28 | 2016-08-28 | 一种语句预处理方法、装置以及语句的解释方法、装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510537379.4A CN105184150B (zh) | 2015-08-28 | 2015-08-28 | 一种语句预处理方法、装置以及语句的解释方法、装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105184150A CN105184150A (zh) | 2015-12-23 |
CN105184150B true CN105184150B (zh) | 2018-08-14 |
Family
ID=54906224
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510537379.4A Active CN105184150B (zh) | 2015-08-28 | 2015-08-28 | 一种语句预处理方法、装置以及语句的解释方法、装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105184150B (zh) |
WO (1) | WO2017036368A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105184150B (zh) * | 2015-08-28 | 2018-08-14 | 李立中 | 一种语句预处理方法、装置以及语句的解释方法、装置 |
CN106021543A (zh) * | 2016-05-26 | 2016-10-12 | 中国农业银行股份有限公司 | 一种数据预处理方法及装置 |
CN117150025B (zh) * | 2023-10-31 | 2024-01-26 | 湖南锦鳞智能科技有限公司 | 一种数据服务智能识别系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101425117A (zh) * | 2008-12-09 | 2009-05-06 | 阿里巴巴集团控股有限公司 | 一种构造sql语句的方法及装置 |
CN104715018A (zh) * | 2015-02-04 | 2015-06-17 | 同程网络科技股份有限公司 | 基于语义分析的智能防sql注入方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4034741B2 (ja) * | 2004-01-14 | 2008-01-16 | 株式会社日立製作所 | 診療支援システム |
US20060212438A1 (en) * | 2005-03-16 | 2006-09-21 | Ming Sum Sam Ng | SQL injection protection by variable normalization |
CN101610271A (zh) * | 2009-07-21 | 2009-12-23 | 国网电力科学研究院 | 一种基于数据流还原技术的数据库安全防护方法 |
CN101995958A (zh) * | 2009-08-28 | 2011-03-30 | 王雅弟 | 动态编码输入法 |
CN105184150B (zh) * | 2015-08-28 | 2018-08-14 | 李立中 | 一种语句预处理方法、装置以及语句的解释方法、装置 |
-
2015
- 2015-08-28 CN CN201510537379.4A patent/CN105184150B/zh active Active
-
2016
- 2016-08-28 WO PCT/CN2016/097079 patent/WO2017036368A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101425117A (zh) * | 2008-12-09 | 2009-05-06 | 阿里巴巴集团控股有限公司 | 一种构造sql语句的方法及装置 |
CN104715018A (zh) * | 2015-02-04 | 2015-06-17 | 同程网络科技股份有限公司 | 基于语义分析的智能防sql注入方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105184150A (zh) | 2015-12-23 |
WO2017036368A1 (zh) | 2017-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9058489B2 (en) | Marking documents with executable text for processing by computing systems | |
CN101356535B (zh) | 一种检测和防止java脚本程序中不安全行为的方法和装置 | |
US8266700B2 (en) | Secure web application development environment | |
US8646088B2 (en) | Runtime enforcement of security checks | |
US8375423B2 (en) | Authenticating a source of a scripted code | |
KR101874373B1 (ko) | 난독화 스크립트에 대한 악성 스크립트 탐지 방법 및 그 장치 | |
CN110309631B (zh) | 一种编程语言结构混淆处理方法、智能终端及存储介质 | |
CN105184150B (zh) | 一种语句预处理方法、装置以及语句的解释方法、装置 | |
US20060085761A1 (en) | Text masking provider | |
Dhariwal et al. | C-Queued Technique against SQL injection attack | |
CN106357668A (zh) | 预防xss攻击的方法 | |
WO2023053101A1 (en) | Systems and methods for malicious code neutralization in execution environments | |
US8484232B2 (en) | Method, computer arrangement, computer program and computer program product for checking for the presence of control statements in a data value | |
US7565543B1 (en) | System and method for authenticating a web page | |
CN103235918A (zh) | 可信文件的收集方法及系统 | |
Ahuja et al. | On preventing SQL injection attacks | |
US9111072B1 (en) | Anti-reverse engineering unified process | |
Yang et al. | Exploring injection prevention technologies for security-aware distributed collaborative manufacturing on the Semantic Web | |
CN109165509A (zh) | 软件实时可信度量的方法、设备、系统及存储介质 | |
US10044752B1 (en) | Null-byte injection detection | |
CN109857488B (zh) | 应用程序的调用控制方法、装置、终端及可读存储介质 | |
CN109218284B (zh) | Xss漏洞检测方法及装置、计算机设备及可读介质 | |
US20030237001A1 (en) | Method and apparatus for preventing buffer overflow security exploits | |
CN113434217A (zh) | 漏洞扫描方法、装置、计算机设备及介质 | |
Bu et al. | Security Checking of Trigger-Action-Programming Smart Home Integrations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |