源代码泄露检测方法及装置制造方法

文档序号:6628710阅读:246来源:国知局
源代码泄露检测方法及装置制造方法
【专利摘要】一种源代码泄露检测方法,包括:拦截网络数据流;对所述网络数据流进行协议解析得到字符流;获取预设的与程序语言对应的检测字符串和/或语法分析库函数;根据所述检测字符串和/或语法分析库函数判断所述解析得到的字符流是否包含源码,若是,则阻断所述网络数据流。此外,还提供了一种源代码泄露检测装置。上述源代码泄露检测检测方法及装置能够提高源代码泄露检测的安全性。
【专利说明】源代码泄露检测方法及装置

【技术领域】
[0001]本发明涉及网络安全【技术领域】,特别是涉及一种源代码泄露检测方法及装置。

【背景技术】
[0002]现在技术中,若互联网应用的源代码遭到泄露(企业内部人员在企业内部网络通过文件传输发送给外网,或者由黑客通过漏洞下载web服务器上存储的源代码,例如php服务器),黑客即可能通过分析源代码,找到应用系统存在的漏洞,从而对应用系统进行攻击。
[0003]而当前企业在网关对付源码防泄露的方法为通过检查传输的文件后缀名来判断是否存在泄露。若源代码文件被压缩或经过后缀名更改后再发送则无法检测得出。因此,传统技术中的源代码泄露检测的安全性不足。


【发明内容】

[0004]基于此,有必要提供一种能够提高源代码泄露检测的安全性的源代码泄露检测方法。
[0005]一种源代码泄露检测方法,包括:
[0006]拦截网络数据流;
[0007]对所述网络数据流进行协议解析得到字符流;
[0008]获取预设的与程序语言对应的检测字符串和/或语法分析库函数;
[0009]根据所述检测字符串和/或语法分析库函数判断所述解析得到的字符流是否包含源码,若是,则阻断所述网络数据流。
[0010]在其中一个实施例中,所述对所述网络数据流进行协议解析的步骤之后还包括:
[0011]判断所述网络数据流是否为文件传输流,若是,则获取所述网络数据流对应的文件后缀名,判断所述文件后缀名是否与预设的后缀名关键字匹配,若是,则执行阻断所述网络数据流的步骤。
[0012]在其中一个实施例中,所述获取所述网络数据流对应的文件后缀名的步骤之后还包括:
[0013]判断所述文件后缀名是否对应压缩文件,若是,则对所述网络数据流进行解压。
[0014]在其中一个实施例中,所述方法还包括:
[0015]接收上传的规则配置请求,提取相应的检测字符串和/或语法分析库函数,并写入到配置文件中;
[0016]所述获取预设的与程序语言对应的检测字符串和/或语法分析库函数的步骤为:
[0017]由所述配置文件读取预设的与程序语言对应的检测字符串和/或语法分析库函数。
[0018]在其中一个实施例中,所述根据所述检测字符串和/或语法分析库函数判断所述解析得到的字符流是否包含源码的步骤包括:
[0019]获取所述检测字符串和/或语法分析库函数的匹配次数,根据所述匹配次数判断所述解析得到的字符流是否包含源码。
[0020]此外,还有必要提供一种能够提高源代码泄露检测的安全性的源代码泄露检测装置。
[0021]一种源代码泄露检测装置,包括:
[0022]数据拦截模块,用于拦截网络数据流;
[0023]数据解析模块,用于对所述网络数据流进行协议解析得到字符流;
[0024]匹配规则获取模块,用于获取预设的与程序语言对应的检测字符串和/或语法分析库函数;
[0025]字符串匹配模块,用于根据所述检测字符串和/或语法分析库函数判断所述解析得到的字符流是否包含源码,若是,则阻断所述网络数据流。
[0026]在其中一个实施例中,所述装置还包括后缀名匹配模块,用于判断所述网络数据流是否为文件传输流,若是,则获取所述网络数据流对应的文件后缀名,判断所述文件后缀名是否与预设的后缀名关键字匹配,若是,则阻断所述网络数据流。
[0027]在其中一个实施例中,所述后缀名匹配模块还用于判断所述文件后缀名是否对应压缩文件,若是,则对所述网络数据流进行解压。
[0028]在其中一个实施例中,所述装置还包括匹配规则配置模块,用于接收上传的规则配置请求,提取相应的检测字符串和/或语法分析库函数,并写入到配置文件中;
[0029]所述匹配规则获取模块还用于由所述配置文件读取预设的与程序语言对应的检测字符串和/或语法分析库函数。
[0030]在其中一个实施例中,所述字符串匹配模块还用于获取所述检测字符串和/或语法分析库函数的匹配次数,根据所述匹配次数判断所述解析得到的字符流是否包含源码。
[0031]上述源代码泄露检测方法和装置中,对网络传输的数据流中的字符串进行检测,通过预设的与程序语言对应的检测字符串和/或语法分析库函数对其进行匹配,从而判断网络传输的数据流是否为传输源代码的数据流。与传统技术中仅通过文件后缀名的方式进行判断的方法相比,不仅可应用于检测文件传输的场景中,对于通过邮件发送源代码的方式也可进行检测,因此源代码泄露检测的范围大大加大,从而提高了安全性。

【专利附图】

【附图说明】
[0032]图1为一个实施例中一种源代码泄露检测方法的流程图;
[0033]图2为一个实施例中一种源代码泄露检测装置的结构示意图;
[0034]图3为另一个实施例中一种源代码泄露检测装置的结构示意图。

【具体实施方式】
[0035]为解决上述源代码泄露检测的安全性不足的问题,特提出了一种源代码泄露检测方法。该方法完全依赖于计算机程序,该计算机程序可运行于基于冯洛伊曼体系的计算机系统上。该计算机系统可以是企业网关或起到网关作用的设备。
[0036]在本实施例中,如图1所示,该方法包括:
[0037]步骤S102:拦截网络数据流。
[0038]在现有技术中,企业内部通常建有子网,该子网通过企业网关与广域网连接,子网内的用户在向广域网上的终端发送邮件或文件时,产生的网络数据流将被该子网的网关所拦截。
[0039]现有技术中的web应用服务器也架设在web服务器托管中心的机房里,并接入该机房的内网,内网与广域网之间也设置有网关设备。web服务器在响应广域网的终端的下载请求时,向其下发的网络数据流也需要通过网关进行转发,则在该网关处被拦截。
[0040]步骤S104:对网络数据流进行协议解析得到字符流。
[0041]在本示例中,协议解析所依赖的协议规则至少包括:HTTP、FTP (File TransferProtocol,文件传输协议)、TFTP (Trivial File Transfer Protocol,简单文件传输协议)、SMNP (Simple Network Management Protocol,简单网络管理协议)以及 SMTP (Simple MailTransfer Protocol,简单邮件传输协议)等。
[0042]网络数据流在以某种协议进行传输时,可检测网络数据流中的协议头部,判断网络数据流匹配的协议类型,然后再根据协议类型对协议正文进行解析(去掉协议头和协议尾以及网络数据流中的起到协议控制作用的字符),提取传输的字符流。
[0043]步骤S106:获取预设的与程序语言对应的检测字符串和/或语法分析库函数。
[0044]步骤S108:通过检测字符串和/或语法分析库函数判断所述解析得到的字符流是否包含源码,若是,则执行步骤SllO ;否则,执行步骤S112。
[0045]步骤SllO:阻断网络数据流。
[0046]步骤S112:放行网络数据流。
[0047]程序语言包含多个关键字,例如,使用if和else关键字定义条件分支,使用funct1n关键字定义函数。某些程序语言的语法中也包含该程序语言独有的关键字,例如,“〈? php phpinfoO ;? >”关键字表示php程序。则可根据每种程序语言的特性,预先设置多个与程序语言对应的检测字符串,通过字符串匹配,即能判断字符流中是否包含检测字符串,从而判断字符流是否包含源码。
[0048]优选的,可使用正则表达式作为检测字符串。正则表达式,又称正规表示法、常规表示法(英语:Regular Express1n,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。
[0049]例如,可使用正则表达式#include\s*[〈"] + ([\w+\.h]+) [">]*( ?! \s*\*/\s*)来匹配C++程序语言中的引用语句。当字符流中出现#include〈a.h>#include〈*>等字符串时,该字符串与该正则表达式的检测字符串匹配。也就是说,检测到了字符流中包含有C++源码,其中引用了 a.h文件。
[0050]预设的作为检测字符串的正则表达式与程序语言语法中的关键字的字符串、字符串顺序和组合的特征相匹配。对于包含有独有关键字的程序语言,例如前述的Php程序语言,则可预设与各种程序语言的独有特征相匹配的正则表达式,并可通过正则表达式的匹配判断程序语言的种类。
[0051]例如,若预先配置javascript脚本程序和html脚本可以由内网传输到外网,不对该两种程序源码进行限制,则在正则表达式匹配到网络数据流中的源码为javascript程序或html程序时,仍然将其放行。但若正则表达式匹配到网络数据流中的源码为php程序(例如正则表达式匹配到了字符串〈? php phpinfoO ; ? >),则将其阻断。
[0052]在本实施例中,还可通过语法分析库函数对字符流进行判断。语法分析库函数通常为程序编译器中提供的语法检查工具库。程序在编译执行之前通常会调用语法分析库函数对程序语言的语法格式进行检测,若其语法存在问题,则无法进入编译环节,并提示语法存在问题的代码行和具体的语法问题。
[0053]而在本实施例中,可预先获取多种常见程序语言的编译器中的语法分析库函数,然后通过调用该函数对字符流进行分析。若该函数返回的检测结果为字符流符合语法规贝U,则表示字符流中的字符串为符合与语法分析库函数对应的程序语句,从而判定出该字符流中包含源码。
[0054]例如,可使用javaCC库作为预设的与java语言对应的语法分析库函数,通过调用该库函数对字符流进行检测,若返回的检测结果符合java语法规则,则表示字符流中包含java源码。
[0055]进一步的,通过检测字符串和/或语法分析库函数判断解析得到的字符流是否包含源码的步骤还包括:获取检测字符串和/或语法分析库函数的匹配次数,根据匹配次数判断解析得到的字符流是否与关键字符串和/或正则表达式匹配。
[0056]例如,在一个网络数据流中匹配到5次以上的include〈net*.h>,或者在匹配到/林/、//、O、{}这些字符,并且其中至少三个字符,在同一个网络数据流同时出现达20次以上,即可认为发现源码泄露。程序语言通常包含不止一个而是大量的检测字符串,根据匹配次数进行判断可防止误判。
[0057]在本实施例中,对网络数据流进行协议解析的步骤之后还包括:判断网络数据流是否为文件传输流,若是,则获取网络数据流对应的文件后缀名,判断文件后缀名是否与预设的后缀名关键字匹配,若是,则执行阻断网络数据流的步骤。
[0058]例如,若通过协议解析判断得到该网络数据流的传输协议为FTP协议,则可判定该网络数据流为文件传输流,传输的数据流可能为文件字节流。通过解析可能无法得到其对应的字符流,因此无法进行字符串匹配,则可通过协议解析得到其文件后缀名,若其后缀名为php、java、c等,则将其阻断。
[0059]进一步的,获取网络数据流对应的文件后缀名的步骤之后还包括:判断文件后缀名是否对应压缩文件,若是,则对网络数据流进行解压。
[0060]如前所述,若通过FTP协议传输的是压缩文件,则可将网络数据流缓存,然后对其进行解压,获取解压后的文件的后缀名,判断其是否为php、java、c等,若是,则可将其阻断。压缩方式至少包括:rar、tar.gz、7z、zip等。
[0061]需要说明的是,若判断得到网络数据流为文件传输流,但文件传输流若为字符流,则仍可继续执行前述的步骤S106,并通过检测字符串和语法分析库函数对文件传输流中的字符进行字符串匹配、正则表达式匹配和程序语法分析。并将匹配结果与文件后缀名的判断结果结合,以和或者或的方式合并后判断是否需要阻断。
[0062]进一步的,网络管理员还可随时访问网关,对网关上预设的检测字符串(包括正则表达式)、语法分析库函数或文件后缀名进行配置。具体的,网关可接收上传的规则配置请求,提取相应的检测字符串(包括正则表达式)、语法分析库函数或后缀名,并写入到配置文件中。
[0063]在本实施例中,获取预设的与程序语言对应的检测字符串(包括正则表达式)、语法分析库函数或文件后缀名的步骤可具体为:由配置文件读取预设的与程序语言对应的检测字符串(包括正则表达式)、语法分析库函数或文件后缀名。
[0064]也就是说,网关设备可提供web访问页面给网络管理员,网络管理员通过浏览器访问该web访问页面后,即可添加、修改或删除检测字符串(包括正则表达式)、语法分析库函数或文件后缀名。网络管理员修改完毕保存后,网关设备即将更新的内容写入配置文件,后续的匹配操作则依据该更新的配置文件进行匹配。
[0065]在一个实施例中,如图2所示,一种源代码泄露检测装置,包括数据拦截模块102、数据解析模块104、匹配规则获取模块106以及字符串匹配模块108,其中:
[0066]数据拦截模块102,用于拦截网络数据流。
[0067]数据解析模块104,用于对所述网络数据流进行协议解析得到字符流。
[0068]匹配规则获取模块106,用于获取预设的与程序语言对应的检测字符串和/或语法分析库函数。
[0069]字符串匹配模块108,用于根据所述检测字符串和/或语法分析库函数判断所述解析得到的字符流是否包含源码,若是,则阻断所述网络数据流。
[0070]在本实施例中,如图3所示,源代码泄露检测装置还包括后缀名匹配模块110,用于判断所述网络数据流是否为文件传输流,若是,则获取所述网络数据流对应的文件后缀名,判断所述文件后缀名是否与预设的后缀名关键字匹配,若是,则阻断所述网络数据流。
[0071]在本实施例中,后缀名匹配模块110还用于判断所述文件后缀名是否对应压缩文件,若是,则对所述网络数据流进行解压。
[0072]在本实施例中,如图3所示,源代码泄露检测装置还包括匹配规则配置模块112,用于接收上传的规则配置请求,提取相应的检测字符串和/或语法分析库函数,并写入到配置文件中;
[0073]所述匹配规则获取模块106还用于由所述配置文件读取预设的与程序语言对应的检测字符串和/或语法分析库函数。
[0074]在本实施例中,字符串匹配模块108还用于获取所述检测字符串和/或语法分析库函数的匹配次数,根据所述匹配次数判断所述解析得到的字符流是否包含源码。
[0075]上述源代码泄露检测方法和装置中,对网络传输的数据流中的字符串进行检测,通过预设的与程序语言对应的检测字符串和/或语法分析库函数对其进行匹配,从而判断网络传输的数据流是否为传输源代码的数据流。与传统技术中仅通过文件后缀名的方式进行判断的方法相比,不仅可应用于检测文件传输的场景中,对于通过邮件发送源代码的方式也可进行检测,因此源代码泄露检测的范围大大加大,从而提高了安全性。
[0076]以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
【权利要求】
1.一种源代码泄露检测方法,包括: 拦截网络数据流; 对所述网络数据流进行协议解析得到字符流; 获取预设的与程序语言对应的检测字符串和/或语法分析库函数; 根据所述检测字符串和/或语法分析库函数判断所述解析得到的字符流是否包含源码,若是,则阻断所述网络数据流。
2.根据权利要求1所述的源代码泄露检测方法,其特征在于,所述对所述网络数据流进行协议解析的步骤之后还包括: 判断所述网络数据流是否为文件传输流,若是,则获取所述网络数据流对应的文件后缀名,判断所述文件后缀名是否与预设的后缀名关键字匹配,若是,则执行阻断所述网络数据流的步骤。
3.根据权利要求2所述的源代码泄露检测方法,其特征在于,所述获取所述网络数据流对应的文件后缀名的步骤之后还包括: 判断所述文件后缀名是否对应压缩文件,若是,则对所述网络数据流进行解压。
4.根据权利要求1所述的源代码泄露检测方法,其特征在于,所述方法还包括: 接收上传的规则配置请求,提取相应的检测字符串和/或语法分析库函数,并写入到配置文件中; 所述获取预设的与程序语言对应的检测字符串和/或语法分析库函数的步骤为: 由所述配置文件读取预设的与程序语言对应的检测字符串和/或语法分析库函数。
5.根据权利要求1所述的源代码泄露检测方法,其特征在于,所述根据所述检测字符串和/或语法分析库函数判断所述解析得到的字符流是否包含源码的步骤包括: 获取所述检测字符串和/或语法分析库函数的匹配次数,根据所述匹配次数判断所述解析得到的字符流是否包含源码。
6.一种源代码泄露检测装置,其特征在于,包括: 数据拦截模块,用于拦截网络数据流; 数据解析模块,用于对所述网络数据流进行协议解析得到字符流; 匹配规则获取模块,用于获取预设的与程序语言对应的检测字符串和/或语法分析库函数; 字符串匹配模块,用于根据所述检测字符串和/或语法分析库函数判断所述解析得到的字符流是否包含源码,若是,则阻断所述网络数据流。
7.根据权利要求1所述的源代码泄露检测装置,其特征在于,所述装置还包括后缀名匹配模块,用于判断所述网络数据流是否为文件传输流,若是,则获取所述网络数据流对应的文件后缀名,判断所述文件后缀名是否与预设的后缀名关键字匹配,若是,则阻断所述网络数据流。
8.根据权利要求7所述的源代码泄露检测装置,其特征在于,所述后缀名匹配模块还用于判断所述文件后缀名是否对应压缩文件,若是,则对所述网络数据流进行解压。
9.根据权利要求6所述的源代码泄露检测装置,其特征在于,所述装置还包括匹配规则配置模块,用于接收上传的规则配置请求,提取相应的检测字符串和/或语法分析库函数,并写入到配置文件中; 所述匹配规则获取模块还用于由所述配置文件读取预设的与程序语言对应的检测字符串和/或语法分析库函数。
10.根据权利要求6所述的源代码泄露检测装置,其特征在于,所述字符串匹配模块还用于获取所述检测字符串和/或语法分析库函数的匹配次数,根据所述匹配次数判断所述解析得到的字符流是否包含源码。
【文档编号】G06F21/57GK104318162SQ201410506037
【公开日】2015年1月28日 申请日期:2014年9月27日 优先权日:2014年9月27日
【发明者】曾加良 申请人:深信服网络科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1