一种基于开放平台的安全检测系统及其检测方法

文档序号:6369908阅读:215来源:国知局
专利名称:一种基于开放平台的安全检测系统及其检测方法
技术领域
本发明涉及软件开发、软件测试及信息安全领域,尤其涉及一种基于开放平台的web应用安全检测系统及其检测方法。
背景技术
近年来互联网的发展衍生出了门类齐全、功能丰富的开放平台,如腾讯的搜搜(soso),人人网的社交网站(SNS, Social Network Site)开放 平台、新浪云平台(SAE, SinaApp Engine)等,都能以开放接口的方式提供给第三方开发者。第三方开发者无需在本地搭建服务的实际硬件及特殊软件环境,而是通过本地仿真开发联调的方式来提交应用,并请求开放平台进行安全检测、应用托管和上线运营。现有基于开放平台的应用软件的开放检测方式集中于平台侧,由平台服务提供者提供包含安全检测在内的应用审核。虽然多数开放平台在提供web服务应用程序接口(API,Application Programming Interface)的同时也提供了与语言相关的软件开发工具包(SDK, Software Development Kit)及使用示例,以期降低开发者进行应用软件开发的难度,但是对基于开放平台的应用软件的开发中存在的安全问题并未多作关注一方面,开放平台提供应用托管、运行的特性决定了其自身对应用安全性的高要求,对应用运行环境和所调用资源有严格限制;另一方面,普通开发者在代码编写过程中对安全防范的忽视使得其应用很难通过平台应用软件的安全审核。开放平台作为第三方应用托管、运行环境的特性决定了其安全性不再是独立的平台安全,而是包含应用安全在内的整体安全。因此,提供一种良好可用性的安全检测系统在web应用开发过程中与开发者实时交互、对存在不良编码风格的代码和未对常见web安全问题加以处理的代码给予提示、以及引导开发者在开发全程中保持对应用软件的安全进行关注,是十分必要的。目前,基于代码分析的静态检测方式较为成熟,但它是以源代码为输入,由代码内容分析推导出具有某种特征的代码片段,与自身维护的恶意特征库相匹配。静态分析方法的分析过程中会得到大量冗余信息,由此造成的误判也较多。因而建立一套完善而又避免过分冗余的安全的分析策略至关重要。

发明内容
有鉴于此,本发明的主要目的在于提供一种基于开放平台的安全检测系统及其检测方法,能够在开发者将第三方应用软件部署至开放平台之前发现存在的安全隐患及安全漏洞,从而提升第三方应用软件在实际应用时的运行稳定性和安全性。为达到上述目的,本发明的技术方案是这样实现的
一种基于开放平台的安全检测系统,该系统主要包括功能向导模块,安全策略配置模块,安全检查模块,报表生成及显示模块,以及检测启用/暂停模块;其中
所述功能向导模块,负责工具功能的配置,提供特定应用的创建向导,创建相关项目文件结构,加载配置文件及依赖库;
所述安全策略配置模块,用于对安全检测的相关安全策略生成规则进行选择,开发者可选择所需的规则;
所述安全检查模块,用于对用户当前编辑区中的代码进行安全检查、以及根据在安全策略配置模块生成的规则更新安全策略,并通过异步监听编辑区的代码发生修改来触发安全检测类的相关方法的执行,包括安全策略信息的加载、语法树的构建、编译单元资源的获取和语法树的解析;
所述报表生成及显示模块,用于检测结果的呈现,所述检测结果包括检测漏洞类型,漏洞所在位置,修复建议。其中该系统还包括检测启用/暂停模块,用于启用或暂停安全检测过程,以供用户控制检测进度。所述的安全检查模块,包括复用的同步编译子模块,作为该安全检查模块的核心,其能够提供相关方法分别对初次编译进行检查和对修改之后的代码进行编译检查。所述的安全检查模块,进一步包括静态代码安全检查子模块、常见web漏洞安全提示子模块和敏感信息泄露漏洞检查子模块;其中所述静态代码安全检查子模块,用于代码编辑过程中与编译同步完成代码的安全提示,该部分的检查功能是以源代码本身无编译错误为前提,进行代码漏洞发现和安全提示;所述常见web漏洞安全提示子模块,用于开发者在进行数据库使用时以及生成数据时进行的安全检查,主要是对与SQL注入相关的方 法及参数的使用定位,对于可能出现安全隐患的SQL语句给出安全提示,以及用于开发者进行代码中的参数传递定位,对于可能出现的安全隐患给出安全提示;以及所述敏感信息泄露漏洞检查子模块,用于开发过程中对应用的工程进行全目录扫描,定位Web工程所需文件以外的临时文件、备份文件、加密文件及隐藏文件,帮助开发者发现文件泄露漏洞。所述安全检测系统,由开发者自行安装或使用eclipse平台在线安装方式集成,通过用户定制特定应用软件类型完成开放平台所提供的软件开发工具包SDK的加载,生成项目工程并以组件形式提供开放应用程序接口 API的调用,用户调用组件完成应用功能的实现。一种基于开放平台的安全系统的检测方法,该方法包括
A、所述系统引导用户通过使用功能向导选择创建应用的类型及相关SDK,之后完成项目目录、配置文件的创建、依赖库、SDK的加载,以创建完成一个新项目;
B、用于通过安全策略配置模块提供的配置面板对安全策略的生成规则加以选择或取消;或,在此设置所涉及的各个检测模块的启动、暂停及停止的控制功能;
C、对用户当前编辑区中的代码进行安全检查、以及根据在安全策略配置模块生成的规则更新安全策略,并通过异步监听编辑区的代码发生修改来触发安全检测类的相关方法的执行;
D、报表生成及呈现模块监听并接收步骤C中各模块发送的检测结果,并分别提供相应的检测结果展示视图。其中,所述步骤B中,若用户未主动进行设置,则系统默认选择所有生成规则,启动所有安全检测模块。步骤C进一步包括Cl、由静态代码安全检查子模块对用户当前编辑区中代码进行检查,检测行为通过两种方式触发系统自动保存,用户主动执行检测;所述静态代码安全检查子模块根据步骤B中设置的生成规则更新安全策略;之后通过异步监听编辑区的代码发生修改来触发安全检测类的相关方法的执行,执行的过程包括安全策略信息的加载,语法树的构建,编译单元资源的获取,语法树的解析;或,
C2、对常见web漏洞安全提示子模块中的安全策略进行配置与加载、语法树构建与编译单元资源获取;或,
C3、执行敏感信息泄露漏洞检查子模块,对工程目录下所有文件进行遍历,根据检测规则进行潜在文件泄露漏洞的定位,包括漏洞出现的位置及路径,弹出提示窗口的位置,并提供相关修复方法,以及供用户选择删除或移除涉及的文件。所述提供的相应检测结果展示视图,具体为
所述静态代码安全检查子模块和常见web漏洞安全提示子模块的结果视图中均包含漏洞类型、所在文件路径、所在行数、修复建议、检测时间;所述敏感信息泄露漏洞检查子模块的结果视图中包含文件所在路径、漏洞危害级别、修复建议。本发明所提供的基于开放平台的安全检测系统及其检测方法,具有以下优点 该安全检测系统,能够在基于开放平台托管的应用软件开发过程中,将安全检测的工
作由开放平台侧转移至本地,使用户能够在上传应用前即可对应用的安全规范和防护能力进行多个层次的检测,从而减少因安全性问题无法通过应用审核而带来的与平台侧之间的多次反复。与现有技术相比,本发明的基于开放平台的应用安全检测系统向用户提供的不仅仅是常规代码规范检测,而是基于特定平台应用托管的多层次安全检测;以往由开放平台对其托管应用进行安全检测的模式下,开发人员只能被动接受开放平台给出的检测结果。与现有模式相比较,本发明中的应用安全检测系统将安全检测的功能引入应用本地开发流程中,向用户提供基于特定开放平台的业务定制及自主安全检测能力。用户可在开发流程中实时获取安全检测结果,还可以根据实际需要进行安全检测策略的设置,只选择自己关注的策略加以检测,并根据生成的集成于本地开发环境中的检测报表定位相关安全漏洞,根据系统提供的修复建议进行后续开发工作。随着各开放平台逐步开放各种方式的互联网业务能力及其API,基于开放平台托管的应用安全问题必将受到越来越多的关注,在本地应用开发流程中引入安全检测机制,从应用开发伊始就为潜在的安全问题提供相应防范措施必将极大程度上降低应用实际运行于开放平台后由于安全问题带来的损失。从技术层面看,集成于本地开发环境中的应用创建向导、可定制的安全检测策略、直观的检测报表以及安全修复建议等会更加便于普通开发者开发出满足特定开放平台安全要求的web应用。


图I为本发明基于开放平台的安全检测系统结构组成示意 图2为本发明基于开放平台的安全检测系统的检测流程示意 图3为本发明中同步编译模块安全检测工作流 图4为本发明中所述安全检测系统使用场景示意图。
具体实施方式
下面结合附图及本发明的实施例对本发明的安全检测系统及其检测方法作进一步详细的说明。图I为本发明基于开放平台的安全检测系统结构组成示意图,该系统按其功能可分为如下几个主要部分功能向导、静态代码检测、敏感信息泄露漏洞检查、常见web漏洞安全提示、检测报表及修复建议生成、检测启用/暂停。本发明中的安全检测系统,可以以插件的形式集成到Eclipse集成开发环境中,具备良好的扩展性。如图I所示,该安全检测系统主要分为功能向导模块,安全策略配置模块,安全检查模块,报表生成及显示模块,以及检测启用/暂停模块。这里,功能向导模块,负责工具功能的配置,提供特定应用的创建向导,创建相关项目文件结构,加载配置文件及依赖库;配置执行完成之后在安全策略配置模块中配置用 户所需要的安全策略,该模块为用户提供了设置安全策略生成规则的定制界面,同时提供了多个类别的定制选项供用户选择;安全检查模块(包含三个子模块)则依据前述两个模块的配置信息利用所述三个子模块分别进行安全检查,并在检查报表生成及显示模块中显示检查的结果,然后,将检测报表以Eclipse视图页的方式呈现给用户;在安全检查的过程中可以通过检查启用/暂停模块对整个检查过程进行控制,该模块在Eclipse工具栏中提供快捷按钮可供用户选择启用或暂停安全检测。其中
所述功能向导模块,作为构建Web工程的向导,包括应用软件基本信息、文件目录结构生成、SDK的选择、配置文件和相关依赖库的加载。所述安全策略配置模块,用于对安全检测的相关安全策略生成规则进行选择,开发者可选择所需的规则,对不关心的规则则无须选择,而系统则会根据用户的选择及特定的规则生成相应的安全策略。所述安全检查模块,用于对用户当前编辑区中的代码进行安全检查、以及根据在安全策略配置模块生成的规则更新安全策略,并通过异步监听编辑区的代码发生修改来触发安全检测类的相关方法的执行,包括安全策略信息的加载、语法树的构建、编译单元资源的获取和语法树的解析等。所述安全检查模块中,复用的同步编译子模块是该安全检查模块的核心,其能够提供相关方法分别对初次编译进行检查和对修改之后的代码进行编译检查。该安全检查模块,进一步包括静态代码安全检查子模块、常见web漏洞安全提示子模块和敏感信息泄露漏洞检查子模块。其中所述静态代码安全检查子模块,用于代码编辑过程中与编译同步完成代码的安全提示,该部分的检查功能是以源代码本身无编译错误为前提,进行代码漏洞发现和安全提示。所述常见web漏洞安全提示子模块,用于开发者在进行数据库使用时以及生成数据时进行的安全检查,主要是对与SQL注入相关的方法及参数的使用定位,对于可能出现安全隐患的SQL语句给出安全提示,以及用于开发者进行代码中的参数传递定位,对于可能出现的安全隐患给出安全提示。所述敏感信息泄露漏洞检查子模块,用于开发过程中对应用的工程进行全目录扫描,定位Web工程所需文件以外的临时文件、备份文件、加密文件及隐藏文件等,帮助开发者发现文件泄露漏洞。所述报表生成及显示模块,用于检测结果的呈现,包括检测漏洞类型,漏洞所在位置,修复建议等。所述检测启用/暂停模块,用于启用或暂停安全检测过程,以供用户控制检测进度。在本发明中,应用安全检测系统由开发者自行安装或使用eclipse平台在线安装方式集成,通过用户定制特定应用类型完成开放平台所提供的SDK的加载,生成项目工程并以组件形式提供开放API的调用,用户调用组件完成应用功能的实现。当系统检测到编辑器中代码发生变化或用户执行检测操作时,相关安全检测模块启动并生成检测报告及修复建议。从而以一种方便实用、交互性强的方式提升用户开发过程中对安全漏洞的关注和修复。图2为本发明基于开放平台的应用安全检测系统的检测流程示意图,用户通过Eclipse平台的本地安装或在线安装功能完成本系统的安装,根据自己的需要设置应用创建向导中相关配置项,系统完成应用目录结构和配置文件的创建、依赖库加载。用户在编辑区进行代码编写,同时可通过系统提供的安全策略设置面板进行安全策略生成规则的选择,如未设置则系统默认加载全部安全策略。用户配置完成之后,系统根据用户所选的配置方案进行检测。该检测分为三部分静态代码安全检查、常见web漏洞安全提示、敏感信息 泄露漏洞检查。当用户主动执行或代码修改时都会触发检查,系统会将检查的结果和修复建议显示在结果视图中,并在代码编辑区域进行标记。如图2所示,该检测过程如下
步骤201 :系统引导用户通过使用功能向导选择创建应用的类型及相关SDK,之后完成项目目录、配置文件的创建、依赖库、SDK的加载。创建完成的项目已具备基本功能,开发者可在此基础上进行修改。步骤202 :用户通过安全策略配置模块提供的配置面板对安全策略的生成规则加以选择或取消,还可以设置各检测模块的启动、暂停及停止。如用户未主动进行设置,系统默认选择所有生成规则,启动所有安全检测模块。根据这些定制信息生成的安全策略进行的安全检测结果最终会反映到检测报表中;
步骤203 :由静态代码安全检查子模块对用户当前编辑区中代码进行检查,检测行为可由两种方式触发系统自动保存,用户主动执行检测。静态代码安全检查子模块根据步骤202中设置的生成规则更新安全策略。之后通过异步监听编辑区的代码发生修改来触发安全检测类的相关方法的执行,执行的过程包括安全策略信息的加载,语法树的构建,编译单元资源的获取,语法树的解析等。各检查模块中复用的同步编译子模块是安全检测的核心,提供相关方法分别用于初次编译检查和修改之后的编译检查。这里,同步编译子模块与其他模块的交互过程,如图3所示。步骤204 :常见web漏洞安全提示子模块中安全策略的配置与加载、语法树构建与编译单元资源获取的原理与步骤203中静态代码安全检查模块基本一致,不同之处在于语法树解析中的特征提取,以及web漏洞检测相关安全策略生成时的特殊处理。步骤205 :敏感信息泄露漏洞检查子模块由开发者主动选择执行,对工程目录下所有文件进行遍历,根据检测规则进行潜在文件泄露漏洞的定位,包括了漏洞出现的位置及路径,弹出提示窗口的位置等,并提供相关修复方法,可供用户选择删除或移除涉及的文件。步骤206 :报表生成及呈现模块监听并接收步骤203、步骤204、步骤205中各模块发送的检测结果,并分别提供了相应的检测结果展示视图。静态代码安全检查模块和常见web漏洞安全提示模块的结果视图中均包含漏洞类型、所在文件路径、所在行数、修复建议、检测时间等;敏感信息泄露漏洞检查模块的结果视图中包含文件所在路径、漏洞危害级另U、修复建议等。图3为本发明中同步编译模块安全检测工作流图;如图3所示,通过系统核心模块同步编译模块与各个模块之间的交互详细介绍了应用安全检测系统的检测方法。开发中的安全检测可由两种方式启动用户主动执行或系统检测到文件内容发生变化时自行进行,这两种方式在触发方式上不同,在执行检测时没有差别。检测核心分析代码结构生成语法树结构,代码中每个语法结构对应语法树中节点,根据用户定制的安全策略生成规则生成安全策略,进行各级别的检测。检测输出包括两部分漏洞标记,每种策略类型对应一种漏洞及漏洞标记,漏洞标记在编辑区漏洞出现的位置以图标的方式给出;检测报表静态代码检测模块、常见web漏洞安全提示模块和敏感信息泄露漏洞检查模块分别生成各自的检测报表,报表中包含一条或多条记录,每条记录包含漏洞类型、漏洞描述、漏洞位置、修复建议等多个字段。由于各安全策略使用是的相同的语法树,安全检测是一个循环的过程,直至所有安全策略检测完成。用户可通过编辑区的漏洞标记及检测报表中漏洞位置等信息定位漏洞,并根据修复建议进行安全修复。 图4为本发明所述安全检测系统使用场景示意图;如图4所示,本发明中使用安全检测系统开发应用的调用过程如下
用户通过开放平台提供的开发者社区资源获得开发SDK,通过在线安装或离线安装的方式完成安全系统与Eclipse的集成,即可使用应用创建向导及开放平台SDK提供的能力API开发web应用。用户可通过系统提供安全策略管理功能进行安全策略生成规则的选择和取消。之后用户在编辑区进行代码编写,系统分析代码结构生成语法树,根据安全策略配置加载生成规则,进行安全检测并生成检测报表和修复建议,检测报表呈现在Eclipse视图区中,修复建议呈现在Eclipse编辑区中。开发者可以方便快捷地根据检测报表定位漏洞位置,以及根据修复建议进行安全隐患的修复。通过安全检测的应用可经由应用部署模块完成从本地至开放平台应用运行环境的部署。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
1.一种基于开放平台的安全检测系统,其特征在于,该系统主要包括功能向导模块,安全策略配置模块,安全检查模块,报表生成及显示模块,以及检测启用/暂停模块;其中 所述功能向导模块,负责工具功能的配置,提供特定应用的创建向导,创建相关项目文件结构,加载配置文件及依赖库; 所述安全策略配置模块,用于对安全检测的相关安全策略生成规则进行选择,开发者可选择所需的规则; 所述安全检查模块,用于对用户当前编辑区中的代码进行安全检查、以及根据在安全策略配置模块生成的规则更新安全策略,并通过异步监听编辑区的代码发生修改来触发安全检测类的相关方法的执行,包括安全策略信息的加载、语法树的构建、编译单元资源的获取和语法树的解析; 所述报表生成及显示模块,用于检测结果的呈现,所述检测结果包括检测漏洞类型,漏洞所在位置,修复建议。
2.根据权利要求I所述的基于开放平台的安全检测系统,其特征在于,该系统还包括检测启用/暂停模块,用于启用或暂停安全检测过程,以供用户控制检测进度。
3.根据权利要求I所述的基于开放平台的安全检测系统,其特征在于,所述的安全检查模块,包括复用的同步编译子模块,作为该安全检查模块的核心,其能够提供相关方法分别对初次编译进行检查和对修改之后的代码进行编译检查。
4.根据权利要求I或3所述的基于开放平台的安全检测系统,其特征在于,所述的安全检查模块,进一步包括静态代码安全检查子模块、常见web漏洞安全提示子模块和敏感信息泄露漏洞检查子模块;其中 所述静态代码安全检查子模块,用于代码编辑过程中与编译同步完成代码的安全提示,该部分的检查功能是以源代码本身无编译错误为前提,进行代码漏洞发现和安全提示; 所述常见web漏洞安全提示子模块,用于开发者在进行数据库使用时以及生成数据时进行的安全检查,主要是对与SQL注入相关的方法及参数的使用定位,对于可能出现安全隐患的SQL语句给出安全提示,以及用于开发者进行代码中的参数传递定位,对于可能出现的安全隐患给出安全提示;以及 所述敏感信息泄露漏洞检查子模块,用于开发过程中对应用的工程进行全目录扫描,定位Web工程所需文件以外的临时文件、备份文件、加密文件及隐藏文件,帮助开发者发现文件泄露漏洞。
5.根据权利要求I所述的基于开放平台的安全检测系统,其特征在于,所述安全检测系统,由开发者自行安装或使用eclipse平台在线安装方式集成,通过用户定制特定应用软件类型完成开放平台所提供的软件开发工具包SDK的加载,生成项目工程并以组件形式提供开放应用程序接口 API的调用,用户调用组件完成应用功能的实现。
6.一种基于开放平台的安全系统的检测方法,其特征在于,该方法包括 A、所述系统引导用户通过使用功能向导选择创建应用的类型及相关SDK,之后完成项目目录、配置文件的创建、依赖库、SDK的加载,以创建完成一个新项目; B、用于通过安全策略配置模块提供的配置面板对安全策略的生成规则加以选择或取消;或,在此设置所涉及的各个检测模块的启动、暂停及停止的控制功能;C、对用户当前编辑区中的代码进行安全检查、以及根据在安全策略配置模块生成的规则更新安全策略,并通过异步监听编辑区的代码发生修改来触发安全检测类的相关方法的执行; D、报表生成及呈现模块监听并接收步骤C中各模块发送的检测结果,并分别提供相应的检测结果展示视图。
7.根据权利要求6所述的基于开放平台的安全系统的检测方法,其特征在于,所述步骤B中,若用户未主动进行设置,则系统默认选择所有生成规则,启动所有安全检测模块。
8.根据权利要求6所述的基于开放平台的安全系统的检测方法,其特征在于,步骤C进一步包括 Cl、由静态代码安全检查子模块对用户当前编辑区中代码进行检查,检测行为通过两种方式触发系统自动保存,用户主动执行检测;所述静态代码安全检查子模块根据步骤B 中设置的生成规则更新安全策略;之后通过异步监听编辑区的代码发生修改来触发安全检测类的相关方法的执行,执行的过程包括安全策略信息的加载,语法树的构建,编译单元资源的获取,语法树的解析;或, C2、对常见web漏洞安全提示子模块中的安全策略进行配置与加载、语法树构建与编译单元资源获取;或, C3、执行敏感信息泄露漏洞检查子模块,对工程目录下所有文件进行遍历,根据检测规则进行潜在文件泄露漏洞的定位,包括漏洞出现的位置及路径,弹出提示窗口的位置,并提供相关修复方法,以及供用户选择删除或移除涉及的文件。
9.根据权利要求6所述的基于开放平台的安全系统的检测方法,其特征在于,所述提供的相应检测结果展示视图,具体为 所述静态代码安全检查子模块和常见web漏洞安全提示子模块的结果视图中均包含漏洞类型、所在文件路径、所在行数、修复建议、检测时间; 所述敏感信息泄露漏洞检查子模块的结果视图中包含文件所在路径、漏洞危害级别、修复建议。
全文摘要
本发明公开了一种基于开放平台的安全检测系统及其检测方法,主要包括功能向导模块,安全策略配置模块,安全检查模块,报表生成及显示模块,以及检测启用/暂停模块;功能向导模块负责工具功能的配置,配置完成之后在安全策略配置模块配置用户所要的安全策略,安全检查模块利用前两个模块的配置信息进行安全检查,并在检查报表生成及展示模块显示出检查的结果,在安全检查的过程中可以通过检查启用/暂停模块对整个检查过程进行控制。利用本发明能够在开发者将第三方应用软件部署至开放平台之前发现存在的安全隐患及安全漏洞,从而提升第三方应用软件在实际应用时的运行稳定性和安全性。
文档编号G06F21/00GK102750469SQ201210155468
公开日2012年10月24日 申请日期2012年5月18日 优先权日2012年5月18日
发明者乔秀全, 刘玉龙, 尚杰, 陈俊亮 申请人:北京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1