首页
社区
课程
招聘
[原创专利8]一种语句预处理方法、装置以及语句的解释方法、装置
发表于: 2016-2-6 11:27 12480

[原创专利8]一种语句预处理方法、装置以及语句的解释方法、装置

2016-2-6 11:27
12480
本发明实施例提供了一种语句预处理方法、装置以及解释方法、装置。包括:确定待执行语句;所述语句包括数据或者代码,所述数据包括外界输入的数据;包括数据的所述语句的语句类型为数据类,包括代码的所述语句的语句类型为代码类;根据所述待执行语句的语句类型对应的预制专用修改规则,对所述待执行语句进行修改;将修改后的语句转给解释装置;以便所述解释装置根据预制的解释规则进行解释。通过本发明实施例,将不同的语句类型的按照不同的方式进行修改,实现不同语句类型的编码异构,降低“注入”、“溢出”被黑客利用的可能性。

权利要求书
1.  一种语句预处理方法,其特征在于,包括:
确定待执行语句;所述语句包括数据或者代码,所述数据包括外界输入的数据;包括数据的所述语句的语句类型为数据类,包括代码的所述语句的语句类型为代码类;
根据所述待执行语句的语句类型对应的预制专用修改规则,对所述待执行语句进行修改;
将修改后的语句转给解释装置;以便所述解释装置根据预制的解释规则进行解释。

2.  根据权利要求1所述的语句预处理方法,其特征在于,所述根据所述待执行语句的语句类型对应的预制专用修改规则进行修改包括:
确定所述待执行语句的语句类型对应的专用间隔字符;
将所述专用间隔字符插入到所述待执行语句的预设位置处。

3.  根据权利要求1所述的语句预处理方法,其特征在于,所述根据所述待执行语句的语句类型对应的预制专用修改规则进行修改包括:
确定所述待执行语句的语句类型对应的专用字符集;
根据所述专用字符集将所述待执行语句进行转换。

4.  根据权利要求3所述的语句预处理方法,其特征在于,所述专用字符集包括:
通过数码类型来区分所述待执行语句的语句类型;通过所述数码的个数来区分不同的语句。

5.  一种语句预处理装置,其特征在于,包括:
待执行语句确定单元,用于确定待执行语句;所述语句包括数据或者代码,所述数据包括外界输入的数据;包括数据的所述语句的语句类型为数据类,包括代码的所述语句的语句类型为代码类;
待执行语句修改单元,用于根据所述待执行语句的语句类型对应的预制        专用修改规则,对所述待执行语句进行修改;
待执行语句传输单元,用于将修改后的语句转给解释装置;以便所述解释装置根据预制的解释规则进行解释。

6.  根据权利要求5所述的语句预处理装置,其特征在于,所述待执行语句修改单元包括:
专用间隔字符确定子单元,用于确定所述待执行语句的语句类型对应的专用间隔字符;
专用间隔字符插入子单元,用于将所述专用间隔字符插入到所述待执行语句的预设位置处。

7.  根据权利要求5所述的语句预处理装置,其特征在于,所述待执行语句修改单元包括:
专用数据字符集确定子单元,用于确定所述待执行语句的语句类型对应的专用字符集;
转换子单元,用于根据所述专用字符集将所述待执行语句进行转换。

8.  一种语句的解释方法,其特征在于,包括:
确定经过预处理的语句;所述语句包括数据或者代码,所述数据包括外界输入的数据;包括数据的所述语句的语句类型为数据类,包括代码的所述语句的语句类型为代码类;所述语句类型对应有专用修改规则;
判断所述经过预处理的语句所包含的专用修改规则;根据所述专用修改规则确定所述经过预处理的语句的语句类型;
根据所述经过预处理的语句的语句类型对应的预制解释规则对所述语句进行解释。

9.  根据权利要求8所述的语句的解释方法,其特征在于,所述判断所述经过预处理的语句所包含的专用修改规则;根据所述专用修改规则确定所述经过预处理的语句的语句类型,包括:
判断所述经过预处理的语句的预设位置包含的专用间隔字符;
根据所述专用间隔字符确定所述经过预处理的语句的语句类型。

10.  根据权利要求8所述语句的解释方法,其特征在于,所述判断所述经过预处理的语句所包含的专用修改规则;根据所述专用修改规则确定所述经过预处理的语句的语句类型,包括:
判断所述经过预处理的语句包含的字符所属的字符集;
根据所述数字符集确定所述经过预处理的语句的语句类型。

11.  根据权利要求10所述语句的解释方法,其特征在于,所述根据所述数字符集确定所述经过预处理的语句的语句类型包括:
判断所述字符集的数码,确定所述数码对应的语句类型为所述经过预处理的语句的语句类型。

12.  根据权利要求8所述的语句的解释方法,其特征在于,所述方法还包括:
将所述经过预处理的语句还原为原始语句。

13.  根据权利要求8至12任意一项所述的语句的解释方法,其特征在于,所述代码包括程序指针,所述程序指针指向所述数据的存储空间,所述方法还包括:
建立程序指针与所述程序指针指向的数据空间的对应标记;
当所述程序指针指向的数据空间的数据被释放时,将所述数据空间标记为锁定;其中,所述标记为锁定的数据空间中的数据不可再次写入。

14.  根据权利要求13所述的语句的解释方法,其特征在于,所述方法还包括:
当所述程序指针被释放时,检查所述程序指针所指向的数据空间是否没有指针指向该数据空间,且该数据空间标记为锁定;
若是,将所述程序指针指向的数据空间标记为可写入。

15.  一种语句的解释装置,其特征在于,包括:
语句确定单元,用于确定经过预处理的语句;所述语句包括数据或者代        码,所述数据包括外界输入的数据;包括数据的所述语句的语句类型为数据类,包括代码的所述语句的语句类型为代码类;所述语句类型对应有专用修改规则;
语句类型判断单元,用于判断所述经过预处理的语句所包含的专用修改规则;根据所述专用修改规则确定所述经过预处理的语句的语句类型;
解释单元,用于根据所述经过预处理的语句的语句类型对应的预制解释规则对所述语句进行解释。

16.  根据权利要求15所述的语句的解释装置,其特征在于,所述语句类型判断单元包括:
专用间隔字符判断子单元,用于判断所述经过预处理的语句的预设位置包含的专用间隔字符;
第一语句类型确定子单元,用于根据所述专用间隔字符确定所述经过预处理的语句的语句类型。

17.  根据权利要求15所述的语句的解释装置,其特征在于,所述语句类型判断单元包括:
字符集判断子单元,用于判断所述经过预处理的语句包含的字符所属的字符集;
第二语句类型确定子单元,用于根据所述数字符集确定所述经过预处理的语句的语句类型。

18.  根据权利要求16所述的语句的解释装置,其特征在于,所述第二语句类型确定子单元,还用于:
判断所述字符集的数码,确定所述数码对应的语句类型为所述经过预处理的语句的语句类型。

19.  根据权利要求15所述的语句的解释装置,其特征在于,所述装置还包括:
语句还原单元,用于将所述经过预处理的语句还原为原始语句。

20.  根据权利要求15-19任意一项所述的语句的解释装置,其特征在于,所述代码包括程序指针,所述程序指针指向所述数据的存储空间,所述装置还包括:
数据空间标记单元,用于,
建立程序指针与所述程序指针指向的数据空间的对应标记;
当所述程序指针指向的数据空间的数据被释放时,将所述数据空间标记为锁定;其中,所述标记为锁定的数据空间中的数据不可再次写入;
或者,
当所述程序指针被释放时,检查所述程序指针所指向的数据空间是否没有指针指向该数据空间,且该数据空间标记为锁定;
若是,将所述程序指针指向的数据空间标记为可写入。

说明书
一种语句预处理方法、装置以及语句的解释方法、装置
技术领域
本发明涉及数据处理技术领域,尤其涉及一种语句预处理方法、装置以及解释方法、装置。
背景技术
目前,“注入”和“溢出”问题是黑客攻击计算机的主要手段。
“注入”:
随着B/S模式应用开发的发展,使用该模式编写程序的程序员越来越来越多,但是由于程序员的水平参差不齐,相当大一部分应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想要知的数据,这个就是所谓的SQLinjection,即sql“注入”式攻击。
脚本“注入”攻击者把SQL(StructuredQueryLanguage,结构化查询语言)命令插入到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”,根据语句前端以及后端的字符确定出语句类型为数据类,那么根据预存的解释规则,进行解释,且最终解释的结果一定是数据。
本发明实施例再具体实施过程中,执行解释程序后进行存储输出时为了节约空间可以还原为原来的数据编码或者代码编码。
另外,本发明实施例在具体实施过程中,考虑到“代码包括程序指针,程序指针指向数据的存储空间”这一特点。为了进一步的降低数据由于“溢        出”作为代码使用的情况,还可以建立程序指针与该程序指针指向的数据空间的对应标记;当程序指针指向的数据空间的数据被释放时,将对应的数据空间标记为锁定,具有锁定标记的数据空间不可再次写入或者执行代码。这样,当“溢出”情况发生时,程序指针被控制指向数据中某段隐藏的程序代码时,由于该段数据已经被释放,数据空间的标记变成了锁定状态,所以,不能够再次被写入或者执行,所以降低了“溢出”情况发生所造成的风险,同时,由于数据被释放的数据空间不能够再次写入,从而也降低了非法用户向数据空间内写入进而造成“溢出”的情况。
进一步的,当程序指针被释放时,检查该程序指针所指向的数据空间是否标记为锁定;若是,将该程序指针指向的数据空间标记为可写入状态。
例如,将原间隔为“00xx00xx”的数据空间释放后标记为另外一个间隔标记“11001100”,该标记代表该数据空间已被锁定,这样即使指针再次指向这个位置,也会识别为数据区释放并已锁定不可以再次写入,出现异常。之后指针释放时会检查是否没有指针指向对应的数据区且数据区已经处于锁定状态,如满足条件则标记为“00000000”,这个标记代表这个数据空间则被彻底释放可以再次写入。
实施例四
该实施例提供了一种语句的解释装置,其具体实现结构如图4所示,具体可以包括如下的模块:
语句确定单元410,用于确定经过预处理的语句;所述语句包括数据或者代码,所述数据包括外界输入的数据;包括数据的所述语句的语句类型为数据类,包括代码的所述语句的语句类型为代码类;所述语句类型对应有专用修改规则;
语句类型判断单元420,用于判断所述经过预处理的语句所包含的专用修改规则;根据所述专用修改规则确定所述经过预处理的语句的语句类型;
解释单元430,用于根据所述经过预处理的语句的语句类型对应的预制解        释规则对所述语句进行解释。
本发明实施例在具体实施过程中,为了支持不同的修改方式,语句类型判断单元420包括:
专用间隔字符判断子单元,用于判断所述经过预处理的语句的预设位置包含的专用间隔字符;
第一语句类型确定子单元,用于根据所述专用间隔字符确定所述经过预处理的语句的语句类型。
或者,在另一种实现方式下,
字符集判断子单元,用于判断所述经过预处理的语句包含的字符所属的字符集;
第二语句类型确定子单元,用于根据所述数字符集确定所述经过预处理的语句的语句类型。
进一步的,第二语句类型确定子单元,还用于,判断所述字符集的数码,确定所述数码对应的语句类型为所述经过预处理的语句的语句类型。
另外,为了降低存储输出时的空间,本发明实施例还可以包括:
语句还原单元,用于将所述经过预处理的语句还原为原始语句。
为了进一步的降低数据由于“溢出”作为代码使用的情况,本发明实施例还可以包括:
数据空间标记单元,用于,
建立程序指针与所述程序指针指向的数据空间的对应标记;
当所述程序指针指向的数据空间的数据被释放时,将所述数据空间标记为锁定;其中,所述标记为锁定的数据空间中的数据不可再次写入;
或者,
当所述程序指针被释放时,检查所述程序指针所指向的数据空间是否没有指针指向该数据空间,且该数据空间标记为锁定;
若是,将所述程序指针指向的数据空间标记为可写入。
用本发明实施例的装置进行解释的具体过程与前述实施例三中的方法实施例类似,可相互参照理解此处不再赘述。
综上所述,通过本发明实施例,通过将待执行语句进行解释之前,对语句根据预制规则进行修改,使得数据类型的语句与代码类型的语句编码异构,使得解释器能够通过不同类型语句被修改后的特点(修改方式),确定出语句的类型,进而根据该语句类型的预定方式进行解释,这样,能够在编码层面将不同类型的语句区分开,使得数据类型的语句只可能按照数据类型语句的解释方式解释,代码类型的语句只能够按照代码类语句的解释方式解释。即使非法用户通过“注入”的方式将代码隐藏在数据类型的语句中,隐藏代码也不能够执行,只能够以数据的形式被解释,或者,非法用户通过“溢出”的方式攻击时,由于该种方式也是将代码隐藏在数据类型语句中,即使隐藏的代码“溢出”,由于该“溢出”的代码已经被修改,通过修改后的标记解释器变可以判断该“溢出”的代码为数据类语句,只能按照数据类语句的解释方式解释,“溢出”的代码依然不会执行,进而,降低了降低“注入”、“溢出”被黑客利用的可能性,提高了计算机的安全保障。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式        的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

[注意]看雪招聘,专注安全领域的专业人才平台!

收藏
免费
支持
分享
最新回复 (20)
雪    币: 341
活跃值: (153)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
2
图呢。。。DOC吧~
2016-2-6 14:20
0
雪    币: 2672
活跃值: (3475)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
3
牛逼,要顶....
2016-2-6 15:37
0
雪    币: 707
活跃值: (1301)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
4
新年快乐,我真心没看完
2016-2-8 08:04
0
雪    币: 3496
活跃值: (1688)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
5
密密麻麻 一看 真心有点晕
2016-2-8 21:08
0
雪    币: 703
活跃值: (332)
能力值: (RANK:380 )
在线值:
发帖
回帖
粉丝
6
新年快乐!用专利语言确实难理解,我用在全球云计算大会演讲的PPT中的几个图片案例简要说明一下。供参考吧,这个专利是我个人申请的,其余的都是在公司阿里巴巴名下申请的。

原理说明


注入案例



溢出案例



如有不明欢迎回复讨论
完整PPT可在论坛http://bbs.pediy.com/showthread.php?t=204032 下载
上传的附件:
2016-2-10 17:10
0
雪    币: 53
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
虽然不知道在说些什么,但是觉得好厉害
2016-2-11 22:16
0
雪    币: 7
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
“将不同的语句类型的按照不同的方式进行修改,实现不同语句类型的编码异构”
1、请问一下代码和数据的格式和结构会不会有变化?如果有变化解释器和处理器怎么设计?
2、按照不同方式修改数据这样会不会效率有些受损失?
3、我比较相信这个专利适合解释型语言用?
4、好像X86把二进制编码空间用完过一次,间隔符是不是要与解释器厂商和处理器厂商配合来确定?
5、在权力要求书里没有硬件设计,好像我的专利代理说专利只保护权力要求的内容。
2016-2-11 22:31
0
雪    币: 703
活跃值: (332)
能力值: (RANK:380 )
在线值:
发帖
回帖
粉丝
9
1、结构本身可以发生变化也可以不变化,如果是完全不同的字符集就可以不做任何变化,如果是为了兼容可以付出一倍的间隔符空间。解释器和处理器可以根据我的描述等同变化,使用间隔符的兼容方案原来的逻辑可以不变,只需要多出间隔符的检测模块。
2、对于现有的运算能力效率影响基本可以忽略,当然如使用完全不同的字符集是不会影响效率的。
3、这个专利适用于任何底层代码不仅仅是解释性语言。
4、间隔符问题两个厂商都可以在各自的层面处理,只不过一个是硬件层面自带间隔符校验,另一个是系统软件层面的校验,两种效果基本上是等同的。
5、我了解的硬件具体设计应该是非必要的,权利要求内容含有硬件方案。

结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式  的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
2016-2-13 15:33
0
雪    币: 7
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
我确实还没有在我的脑海里正确的理解你的专利技术,这个是完全属于你个人的专利吗?愿意授权给别人使用吗?可不可以给我一个完整的技术方案的说明书?软硬件的都要。
2016-2-13 16:45
0
雪    币: 7
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
比如说迅雷影音在播放时读取大量的数据,这些数据需不需要间隔符?迅雷影音的程序代码需不需要间隔符?这些间隔符是临时加上去的还是加一次以后就这样了-永久性加上去?
2016-2-13 17:40
0
雪    币: 703
活跃值: (332)
能力值: (RANK:380 )
在线值:
发帖
回帖
粉丝
12
完全属于我个人的专利,授权可以谈。
2016-2-13 21:24
0
雪    币: 703
活跃值: (332)
能力值: (RANK:380 )
在线值:
发帖
回帖
粉丝
13
读任何数据或程序都可以加,临时加或在文件里永久加都是可以的。这种格式压缩后和没加应该差不多的,这样读视频流就不可能溢出了。图片也是一样的,网络的图片加上特定格式必需下到本地解码展示那些 xxx.jpg.asp 之类的漏洞也就没戏了
2016-2-13 21:33
0
雪    币: 967
活跃值: (1138)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
14
专利没有仔细看,看了一下你的图
我想说的是 怎么实施,如果要修改别人开发的源码来实现这个,一个公司的代码是巨大的,并且是稳定的,谁想动啊!
你的专利最好不改动别人写好的代码,如果是web端直接能跑
如果是客户端最好重新编译一下就能用,
否则我想用的人应该不多
下面是个人看法
如果是应用程序我还不如加入一个vmp,一切都解决了,安全稳定还防止逆向一举多得
2016-2-13 22:11
0
雪    币: 703
活跃值: (332)
能力值: (RANK:380 )
在线值:
发帖
回帖
粉丝
15
改解释器或硬件就可以一劳永逸了
2016-2-13 22:25
0
雪    币: 967
活跃值: (1138)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
16
我们先弄个简单的的 那个shell注入
在不修改那几行php代码的情况下
我很好奇,你解析器怎么处理,你的解析器不止做解析还需要混淆数据是吧
如果是这样的话,本来php解析就慢,你相当于再弄了一层,会使速度更慢
可能我没有理解清楚
能否来个可执行的方案,具体点的,最好你搭建一个环境
估计实现后 商用还不知道多上时间
2016-2-13 22:46
0
雪    币: 703
活跃值: (332)
能力值: (RANK:380 )
在线值:
发帖
回帖
粉丝
17
很简单的基于解释器要改PHP的解释引擎
基于数据区隔只要进来的所有数据都加上区隔符号
例如PHP传入所有的信息都用x来分割  你可以参考2015全球云计算大会的PPT
http://bbs.pediy.com/showthread.php?t=204032
这里下载
2016-2-13 23:11
0
雪    币: 7
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
18
“例如PHP传入所有的信息都用x来分割”,
这个动作会不会把处理速度拖慢?
我的QQ1783719585,微信changroc,我们私下聊聊吧。
2016-2-14 06:09
0
雪    币: 703
活跃值: (332)
能力值: (RANK:380 )
在线值:
发帖
回帖
粉丝
19
数据库操作实际上分两步 第一步传参后解释器解读sql指令,这个时候全部被分割的参数是不可能拼出sql语句的,第二步入库,如果这部分数据不在web上展示可以去掉分割符入库性能上基本没有影响,如web调用这部分依然是使用分割符入库,出库时web上的解释器也不会把这部分数据读成html的语言。

我微信好友到上限了,一会再加你
2016-2-14 09:35
0
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
你的注入溢出攻击个人认为需要通过硬件定制来防护吧?
除非你自己设计一款类指令虚拟机(也就是解释器)来进行解析,但是如果这么做的话 我想问题就更多了 首先是效率问题 其次的问题就类指令虚拟机本体的漏洞无从保护 虚拟机不可能保护虚拟机自己 最后就是,我看不出你这个方案跟现有Nx位方案比有什么优势 起码现有Nx保护是由处理器来保证的 效率很高 而且可以有效的阻止应用层对此保护的篡改
2016-2-14 11:12
0
雪    币: 703
活跃值: (332)
能力值: (RANK:380 )
在线值:
发帖
回帖
粉丝
21
可以完全不使用硬件,本质原理就是是数据归数据,代码归代码,软硬皆可。至于效率影响对于现有的终端性能影响基本为零,Nx位方案不清楚是什么麻烦介绍一下。
2016-2-14 14:35
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册