本发明涉及代码安全技术领域,尤其涉及一种代码保护方法及系统。
背景技术:
SAP(System Applications and Products)系统是世界上应用范围最广的ERP系统,世界500强中超过80%的企业都在使用SAP系统实现对生产、管理等业务的管理。
SAP系统中的ABAP(Advanced Business Application Programming)语言是SAP公司其ERP系统开发的第四代高级语言,是一种面向对象的高级语言。SAP系统是开放的,其系统内的所有代码不需经编译即可直接运行,代码内容对赋与权限的用户都是开放的。
系统的开放性在给用户带来极大方便的同时也给企业安全管理带来极大隐患,技术方案的保密性大大降低,企业可能面临关键技术成果及研发程序源代码及开发成果泄露的风险。
技术实现要素:
本发明实施例提供一种代码保护方法及系统,实现了对代码的保护,规避了代码泄露的安全漏洞。
第一方面,本发明实施例提供一种代码保护方法,包括:
接收用户输入的程序名称,判断所述程序名称对应的程序是否为受保护程序;
若是,则判断所述用户是否为受限制用户;
若所述用户为非受限制用户,则允许所述用户获取所述程序名称对应的程序代码。
可选的,所述判断所述程序名称对应的程序是否为受保护程序,包括:
若预设目标程序列表中不存在所述程序名称,则所述程序名称对应的程序为受保护程序。
可选的,在判断所述程序名称对应的程序是否为受保护程序之后,所述方法还包括:
若所述程序名称对应的程序为非受保护程序,则对所述程序中的代码进行关键词过滤;
在所述程序中的代码不存在关键词时,允许所述用户获取所述程序名称对应的程序代码。
可选的,所述判断所述用户是否为受限制用户,包括:
将所述用户的信息与预设用户登记表中用户的信息进行比较;
若所述用户登记表中存在所述用户的信息,则所述用户为受限制用户。
可选的,所述用户的信息包括:用户的注册信息、用户注册的期限信息和/或用户输入的验证码信息。
第二方面,本发明还提供了一种代码保护系统,包括:
第一判断模块,用于接收用户输入的程序名称,判断所述程序名称对应的程序是否为受保护程序;
第二判断模块,用于在所述程序名称对应的程序是受保护程序时,判断所述用户是否为受限制用户;
权限模块,用于在所述用户为非受限制用户时,允许所述用户获取所述程序名称对应的程序代码。
可选的,所述第一判断模块,具体包括:
若预设目标程序列表中不存在所述程序名称,则所述程序名称对应的程序为受保护程序。
可选的,所述系统还包括:
关键词过滤模块,用于在所述程序名称对应的程序为非受保护程序时,对所述程序中的代码进行关键词过滤;
所述权限模块,还用于在所述程序中的代码不存在关键词时,允许所述用户获取所述程序名称对应的程序代码。
可选的,所述第二判断模块,用于:
将所述用户的信息与预设用户登记表中用户的信息进行比较;
若所述用户登记表中存在所述用户的信息,则所述用户为受限制用户。
可选的,所述用户的信息包括:用户的注册信息、用户注册的期限信息和/或用户输入的验证码信息。
本发明实施例提供的代码保护方法及系统,通过对程序是否受保护以及用户是否为受限用户的双重判断,实现了对开放代码的保护,规避了代码泄露的安全漏洞,在节省成本的同时,达到了安全生产的目的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一种实施例提供的一种代码保护方法的流程图;
图2为本发明另一种实施例提供的一种代码保护方法的流程示意图;
图3为本发明一种实施例提供的一种代码保护系统的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明实施例保护的范围。
图1为本发明一种实施例提供的一种代码保护方法的流程示意图,如图1所示,该方法包括以下步骤:
101、接收用户输入的程序名称,判断所述程序名称对应的程序是否为受保护程序;
102、若是,则判断所述用户是否为受限制用户;
103、若所述用户为非受限制用户,则允许所述用户获取所述程序名称对应的程序代码。
上述方法通过对程序是否受保护以及用户是否为受限用户的双重判断,实现了对开放代码的保护,规避了代码泄露的安全漏洞,在节省成本的同时,达到了安全生产的目的。
下面通过具体的实施例对上述方法进行详细说明。
本实施例从受保护系统出发,通过远程功能调用(RFC)的方式,将安全验证信息存储在另外的服务器上,从而实现受保护信息与密钥信息进行物理隔离,通过信息认证实现信息安全的目的。
本实施例中通过安全信息接口对程序代码进行保护,安全信息接口涉及两个系统,ECC(ERP Central Componet)系统和SRM(Supplier Relationship Management,供应商关系管理)系统,受保护信息在ECC系统中,而安全验证信息存储在另外一台远程(RFC)服务器上。优选的涉及三种程序:增强,RFC FM和程序。其中增强在ECC系统,属于标准程序修改,用于调用RFC进行权限验证;SRM系统里有RFC何程序,RFC FM负责权限验证,程序负责用户和程序的注册。
创建代码安全保护程序登记表和代码安全验证用户登记表,其中代码安全保护程序登记表存储受保护程序名称,代码安全验证用户登记表用来存储需要屏蔽的用户名。
如图2所示,本发明实施例提供了一种代码保护方法的流程示意图,如图2所示,该方法包括以下步骤:
201、接收用户输入的程序名称,判断所述程序名称对应的程序是否为受保护程序;
若预设目标程序列表中不存在所述程序名称,则所述程序名称对应的程序为受保护程序。
可理解的是,该预设目标程序列表可以理解为上述的代码安全保护程序登记表。
202、若是,则执行步骤203,否则,执行步骤205;
203、判断所述用户是否为受限制用户,若否,则执行步骤204,否则,该进程直接DUMP,结束技术校验。
具体的,上述步骤203判断所述用户是否为受限制用户,具体包括:
将所述用户的信息与预设用户登记表中用户的信息进行比较;
若所述用户登记表中存在所述用户的信息,则所述用户为受限制用户。
可理解的是,本实施例中的所述用户的信息包括:用户的注册信息、用户注册的期限信息和/或用户输入的验证码信息。
另外,该预设用户登记表可以理解为上述预先创建的代码安全验证用户登记表。
204、若所述用户为非受限制用户,则允许所述用户获取所述程序名称对应的程序代码。
205、若所述程序名称对应的程序为非受保护程序,则对所述程序中的代码进行关键词过滤;
206、在所述程序中的代码不存在关键词时,允许所述用户获取所述程序名称对应的程序代码。
上述实施例中从受保护系统出发,通过远程功能调用(RFC)的方式,将安全验证信息存储在另外的服务器上,从而实现受保护信息与密钥信息进行物理隔离,通过信息认证实现信息安全的目的。
具体上述方法中功能的主要实现方式是:设置一个安全服务器,以屏蔽用户对ECC系统的操作。在ECC用户打开程序时,调用检查程序完成权限检查。检查不通过则直接退出程序;通过验证后再远程调用SRM系统的权限验证接口,而在验证接口内,会根据程序名和用户名验证是否被符合保护的条件,如果符合,报错。否则还要检查程序是否有限制语句,有则报错。
验证消息:
001权限检查不通过-用户&未注册。
002权限检查不通过-用户&不在有效期。
003权限检查不通过-用户&验证码不对。
004程序&代码检查不通过,有禁止关键字存在!
005程序&在目标系统不存在
当用户登录系统后,通过进行修改、查看受保护程序时,本实施例的方法将对登录分别进行人员信息、程序名称及其代码中的敏感关键词等时行认证检查,提高了代码的安全性。
具体验证逻辑如下:首先对用户输入的程序名称进行检查,确定该程序是否标记为受保护:如果该程序为非标记保护程序,则对该程序中的代码进行关键词过滤,确定是否存在下载源代码功能,如果存在关键词,则该进程直接DUMP,避免用户对进程进行DEBUG,如果不存在,则技术校验结束,用户可进行后续操作;
如果该程序标记为受保护,则检查当前登录用户是否标记为受限制访问用户,如果是受限制用户,该进程直接DUMP,结束技术校验;如果用户不是受限制用户,则用户可进行后续正常操作。
上述实施例在技术实现方面,开拓性的通过常规开发的技术方式,将用户和程序分别分为受保护和受限制两类,并结合系统的自身技术特性,以最小的开发成本和管理成本规避了企业在使用SAP ERP系统过程中所面临的安全漏洞,达到了安全生产的目的。
本发明实施例还提供一种代码保护系统的结构示意图,如图3所示,该系统包括:
第一判断模块31,用于接收用户输入的程序名称,判断所述程序名称对应的程序是否为受保护程序;
第二判断模块32,用于在所述程序名称对应的程序是受保护程序时,判断所述用户是否为受限制用户;
权限模块33,用于在所述用户为非受限制用户时,允许所述用户获取所述程序名称对应的程序代码。
在本实施例的一个优选的实施方式中,所述第一判断模块,具体包括:
若预设目标程序列表中不存在所述程序名称,则所述程序名称对应的程序为受保护程序。
在本实施例的一个优选的实施方式中,所述系统还包括:
关键词过滤模块,用于在所述程序名称对应的程序为非受保护程序时,对所述程序中的代码进行关键词过滤;
所述权限模块,还用于在所述程序中的代码不存在关键词时,允许所述用户获取所述程序名称对应的程序代码。
在本实施例的一个优选的实施方式中,所述第二判断模块,用于:
将所述用户的信息与预设用户登记表中用户的信息进行比较;
若所述用户登记表中存在所述用户的信息,则所述用户为受限制用户。
在本实施例的一个优选的实施方式中,所述用户的信息包括:用户的注册信息、用户注册的期限信息和/或用户输入的验证码信息。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明实施例的技术方案,而非对其限制;尽管参照前述实施例对本发明实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。