交互式数据系统通用安全防护系统的制作方法

文档序号:11279309阅读:293来源:国知局
交互式数据系统通用安全防护系统的制造方法与工艺

本发明涉及交互式数据可视化应用领域,特别涉及一种交互式数据系统通用安全防护系统。



背景技术:

应用系统的安全性越来越受到人们的关注,利用web应用系统的漏洞进行入侵、渗透已经成为互联网安全隐患之一,如何保障系统安全和企业核心数据不受破坏,已成为企业信息部门的焦点问题。

软件系统的信息安全,包括信息保密性、完整性和可用性。保密性:指高级别信息仅在授权情况下流向低级别的客户体;完整性:指信息不会被非授权修改,信息保持一致性等;可用性:指合法用户的正常请求能及时、正确、安全地得到服务或回应。传统web应用系统的做法是,it人员事先根据需求,分解出系统的安全需求,并对安全需求进行定制化开发,将安全模块和系统其他部分定制开发为一个整体,这样做的问题是,针对不同的web应用系统,即使其面对的是同样的或相似的安全需求时,均需要重新定制开发,造成研发资源浪费。



技术实现要素:

本发明的目的在于克服现有技术中需要对每一个不同的web系统的不同安全需求做定制开发,即使不同web系统安全需求相似也需要重新进行整体设计的问题,提供一种可以针对多种系统进行防护的交互式数据web系统通用安全防护系统。

为了实现上述发明目的,本发明提供了以下技术方案:

一种交互式数据系统通用安全防护系统,依次包括,

数据输入接口,与交互式数据系统的人机交互输入连接;

防护模块,对子数据输入接口输入的数据进行安全检测,将通过安全检测的数据自数据输出接口输出;

数据输出接口,与交互式数据系统的数据处理模块连接。

进一步的,所述防护模块包括鉴权资源注册模块、csrf攻击防护模块、参数校验模块、跨站脚本攻击防护模块、登录检验模块、sql注入防护模块、xml实体注入攻击防护模块中的至少两种;各个模块按照指定顺序依次对输入数据进行安全检测;

所述鉴权资源注册模块用于对交互式数据系统的菜单请求数据以及输入的url进行鉴权;

所述csrf攻击防护模块用于对数据进行csrf攻击防护检测;

所述参数校验模块用于对接收的所有url的参数进行参数校验;

跨站脚本攻击防护模块用于接收到数据进行跨站脚本攻击防护;

登录校验模块用于对登录用户的权限进行检测;

sql注入防护模块用于防止sql注入攻击;

xml实体注入攻击防护模块用于防止xml实体注入攻击。

进一步的,所述csrf攻击防护模块对每个请求的参数中携带的token值进行校验;所述token值为安全随机数;

请求中加入token值的方法为:使用csrf请求属性来获取当前的csrftoken;或,使用springsecurity的jsp标签库中的csfrinput标签。

进一步的,所述sql注入防护模块使用preparedstatement防范sql注入攻击,或,使用spring提供的namedparameterjdbctemplate类执行sql防范sql注入攻击。

进一步的,所述xml实体注入攻击防护模块通过解析http/https请求中xml结构参数防止xml实体注入、解析静态xml配置文件防止xml实体注入或解析excel防止xml实体注入。

进一步的,所述防护模块包括隐私保护模块,所述隐私保护模块用于根据用户的设置,对指定的参数进行全部隐藏显示或部分隐藏显示。

进一步的,所述防护模块包括个性化设置模块,所述个性化设置模块用于用户设置交互式数据系统中参数的必填项和/或参数的类型、取值范围。

进一步的,所述防护模块包括运行日志保护模块用于对交互式数据系统的所有操作记录日志,并对日志的访问进行控制,同时,对日志中的敏感数据进行匿名化处理。

进一步的,所述防护模块包括运行动态处理模块,所述运行动态处理模块用于协调所述防护模块中其他各个功能模块的运行

与现有技术相比,本发明的有益效果:本发明通过提供一种交互式数据系统通用安全防护系统可达到如下效果:

1、对于业务编排人员:不需要知晓本发明提供安全系统的具体开发技术,只需要了解本发明提供的安全防护系统提供的功能、接口和使用方法,就能通过将本发明提供的安全系统接口与交互式数据系统对接,从而独立地编排出具有安全能力的交互式数据web应用系统。

2、对于数据可视化的交互式数据应用平台:本发明提供安全系统采用松耦合设计,分解成多个独立模块,只要平台具有扩展模块的能,就能将各个模块有机的组合起来,生成具有安全能力的web应用系统。

3、对于项目组:本发明提供安全系统的各模块具有高复用性,模块开发完成能应用于所有web应用系统,不再为每个交互式数据应用(app)定制化开发而投入人力,大大地提高了开发效率、节省开发资源、加快开发周期。

4、对于交互式数据应用的升级:本发明提供安全系统的各模块具有独立发布,独立安装的能力。从而避免了交互式数据应用与安全必须捆绑发布的困境,大大提升企业的it集成实施能力。

附图说明:

图1是本发明提供的交互式数据系统通用安全防护系统应用示意图。

图2是本发明提供的交互式数据系统通用安全防护系统安全处理流程示例。

图3是本发明提供的交互式数据系统通用安全防护系统个性化安全需求的动态解析及校验处理。

图4是本发明中安全防护系统加载到具体应用中的流程实施例。

具体实施方式

下面结合附图及具体实施例对本发明作进一步的详细描述。但不应将此理解为本发明上述主题的范围仅限于以下的实施例,凡基于本发明内容所实现的技术均属于本发明的范围。

如图1所示,本实施例提供一种交互式数据系统通用安全防护系统,依次包括,

数据输入接口,与交互式数据系统的人机交互输入连接;

防护模块,对子数据输入接口输入的数据进行安全检测,将通过安全检测的数据自数据输出接口输出;

数据输出接口,与交互式数据系统的数据处理模块连接。

所述防护模块包括鉴权资源注册模块、csrf攻击防护模块、参数校验模块、跨站脚本攻击防护模块、登录检验模块、sql注入防护模块、xml实体注入攻击防护模块,我们将以上所有模块的集合体称之为web安全模块;web安全模块各个模块按照指定顺序依次对输入数据进行安全检测。另外,本实施例中,防护模块还包括隐私保护模块、个性化设置模块、运行日志保护模块和运行动态处理模块;但是应注意的是,用户可根据自己app的具体需要对上述模块进行选择全部启用或者部分启用,本实施例中,以全部启用为例进行解释。

请注意的是,鉴权资源注册模块用于对交互式数据系统的菜单请求数据以及输入的url进行鉴权;理论上,数据可视化平台(交互式数据系统)的所有具体应用(app)的菜单以及界面的url请求都需要经过鉴权资源注册的鉴权;具体的,用户需要先将app的所有url按照其安全配置模板进行配置;而在编译打包生成具体的app时,解析app包含的url资源信息,动态生成install和uninstall的url资源定义sql脚本,放在app安装包的对应目录下;注册的资源信息里,包含界面框架、界面导航树、功能,从而实现精细化访问安全控制;安装app时,将上述sql脚本写入到数据库的对应表中;对应表如可以是资源定义信息表、资源和角色归属关系表、资源定义表述表中的一种或多种等。

所述csrf攻击防护模块用于对数据进行csrf攻击防护检测,所述csrf攻击防护模块对每个请求的参数中携带的token值进行校验;所述token值为安全随机数;请求中加入token值的方法为:使用csrf请求属性来获取当前的csrftoken;或,使用springsecurity的jsp标签库中的csfrinput标签;如果使用json,可以将token信息放到请求头中。一种典型的模式是将csrftoken引入到源标签中。可将所有的token引入到所有的ajax请求中。

所述参数校验模块用于对接收的所有url的参数进行参数校验;包含本安全系统的具体应用编译打包生成的app时,拷贝validate-common-config.xml文件到app的web-inf\validate目录下,validate文件夹没有的话新建。参数校验web安全最重要的一道防御,严格的参数校验能够防止常见的sql注入、os注入、目录遍历攻击、跨站脚本攻击等;参数校验规则配置文件的命名规则为validate-rule_xxx.xml,只要以validate-rule开头的xml文件就可以;该文件也需要放入app的web-inf\validate目录下;编译打包时拷贝validate-rule_xxx.xml文件到validate目录,文件中定义app中固定的参数校验规则,动态的参数校验采用另外的方案实现(后文中会描述)。应注意的是,该配置文件合入后,该app的接收所有url的参数都会进行参数校验。

跨站脚本攻击防护模块用于接收到数据进行跨站脚本攻击防护;跨站脚本攻击防护模块封装了一个防xss攻击的工具组件,它实现了常见的防xss攻击的转义方法;防xss攻击转义类型有三种:html进行转义、htmlattribute进行转义、javascript进行转义。

登录校验模块用于对登录用户的权限进行检测;app安装完成后,基于安装时注册到交互式数据系统的url资源定义信息,系统管理员可登录交互式数据系统为app向其他角色授权;具有app访问权限的角色登录成功后,便可使用其权限范围内的功能;交互式数据系统的登录及安全控制,统一由交互式数据系统的安全模块提供服务;安全模块的登录服务中,实现了“登录认证防暴力破解”、“认证管理”、“登录口令保护”、“会话管理”等功能;平台的授权用户接口包括单点安全登录模式及单系统安全登录模式两种接口方式,同时,本安全系统为用户角色配置可访问资源的功能页面,具有系统管理员级别的用户登录后,可在该功能模块给其他低级别用户角色赋权;具体的,登录时,验证登录用户是否是系统中的用户,无效用户则提示身份无效,停留在登录页面;有效用户则验证密码是否正确,正确则为用户生成单点登录凭证;权限过滤组件判定当前登录用户身份,最终呈现他可访问的资源;用户登录后,在系统内的所有操作发起的请求,根据具体情况会经过web安全框架的安全组件对请求进行验证。

sql注入防护模块用于防止sql注入攻击,所述sql注入防护模块使用preparedstatement防范sql注入攻击,或,使用spring提供的namedparameterjdbctemplate类执行sql防范sql注入攻击。

xml实体注入攻击防护模块用于防止xml实体注入攻击,所述xml实体注入攻击防护模块通过解析http/https请求中xml结构参数防止xml实体注入、解析静态xml配置文件防止xml实体注入或解析excel防止xml实体注入。

所述隐私保护模块,所述隐私保护模块用于根据用户的设置,对指定的参数进行全部隐藏显示或部分隐藏显示。交互式数据系统新建角色时默认是需要对用户标识(个人数据标识)屏蔽的,如果该角色对于用户标识是屏蔽的,该角色下的用户登录平台时看到的个人数据应该是屏蔽(匿名化)的。隐私保护模块分为个人数据隐私保护和日志中个人数据匿名化;针对个人数据时:针对常见的涉及用户隐私个人数据参数,app界面呈现时需要做匿名化处理。比如msisdn(电话号码)18912345678,如果末尾屏蔽4位,界面将呈现匿名化后的结果18912345****。对于匿名化的数据,需要调用平台工具组件的方法做进行匿名化。编排app时,设置那些数据需进行匿名化;app运行时,动态解析匿名化配置信息,调用隐私保护模块完成匿名化处理。针对操作日志中个人数据匿名化操作,与web界面不同,操作日志中个人数据匿名化开关在setting->安全管理->个人数据匿名化配置界面。

所述防护模块包括个性化设置模块,所述个性化设置模块用于用户设置交互式数据系统中参数的必填项和/或参数的类型、取值范围具体的,数据可视化平台的ui设计器编排页面时,可根据app应用的个性化安全需求,配置参数校验规则。例如,编排人员可为app页面中某个控件(如文本框)设置必填、合法的身份证号、ip、email地址、长度限制、值范围等常见的检验规则,这些规则以选项形式选择。超出常见部分,编排人员可自定义正则表达式完成业务需求;用于也可以为一个控件指定多个参数校验规则,比如某参数既需必填输入值又必须在指定范围内。配置的安全规则在保存页面时一并存在在页面源文件内。当app编译发布时,分离出源文件中设置的安全规则信息,作为app运行时参数校验的依据。

所述防护模块包括运行日志保护模块用于对交互式数据系统的所有操作记录日志,并对日志的访问进行控制,具体的操作如表一所示。

表一

所述防护模块包括运行动态处理模块,所述运行动态处理模块用于协调所述防护模块中其他各个功能模块的运行

本发明提供的安全系统通过配置引入模块与具体app配置为一体,具体如图4所示,采用web.xml配置引入:编译打包生成的app,该配置文件不需要修改,直接拷贝到app的web-inf\目录下即可;web.xml中包含安全的相关配置:配置单点登录/退出、数据可视化平台自定义的日志组件、安全请求前缀校验组件、处理各模块间session对应关系组件、判断应用的url是否已经注册的组件、拦截请求的组件等等;其中,配置单点登录/退出由cas单点退出过滤器完成,系统中所有请求都会经过这个过滤器处理,它主要完成当前登录用户的请求会话是否有效,若无效就取消登录凭证,并自动调转到登录页面;数据可视化平台自定义的日志组件用于记录日志,根据日志文件大小和生成时长等阈值设置来压缩备份日志文件;安全请求前缀校验组件为请求前缀校验过滤器,其用于调用系统接口的请求,需验证发起请求的用户身份凭证;处理各模块间session对应关系组件用于验证请求是从哪个页面链接过来的,系统中所有请求都会经过这个过滤器处理,它验证请求是否从信任的页面链接发起的;判断应用的url是否已经注册的组件为url是否在系统已经配置的验证过滤器,系统中所有请求都会经过这个过滤器处理,它验证请求的url是否是系统中的鉴权资源(app安装时,将它的url注册到系统中);如果是鉴权资源则放行,否则结束请求。

spring-security.xml配置文件引入:编译打包时会将该文件copy到app的web-inf\conf目录下即可;主要配置包括:安全工具组件、注册并配置防csrf攻击组件、注册并配置dos攻击组件、注册并配置参数校验组件、注册并配置cookie过滤器、注册并配置请求头校验组件、注册并配置文件上传验证组件、注册并配置用户认证的入口、注册并配置系统访问url资源验证组件、注册并配置系统对外接口验证组件、注册并配置集成ssocas组件等等;注册配置的这些组件,在app运行时完成安全过滤作用。例如,当用户上传文件时,根据app编排的个性化安全配置信息(如允许上传的文件类型、文件大小等),使用上传验证组件完成校验。校验通过,继续执行后续业务逻辑;校验失败,结束请求并提示用户。

参数校验组件:先验证请求url是否是白名单,若是就不做参数校验,若不是就要做参数校验;根据url找到请求参数校验配置信息,对各个参数进行验证;验证不通过则结束请求;白名单和参数校验配置信息分别在web-inf\validate\validate-common-config.xml、web-inf\validate\validate-rule-app.xml配置文件中,配置文件由spring框架加载;参数校验规则配置成正则表达式,验证时将参数值与正则表达式匹配,若能匹配表示验证通过,否则验证不通过。

防csrf攻击组件:验证系统中所有请求,首先查询当前请求url是否在系统中的鉴权资源url库中存在,若存在则放行;若不存在,需验证当前请求url是否设置成了系统防csrf攻击白名单,是白名单则放行,不是则结束请求。

防csrf攻击白名单配置在web-inf\conf\spring-security.xml配置文件中,配置文件由spring框架加载。

防doc攻击组件:验证系统中所有请求在时间周期内的发起次数是否超过攻击次数阈值,未超过则继续放行;超过了则结束每个请求,直到访问频率恢复正常。从而防止恶意攻击。

时间周期和攻击次数阈值配置在web-inf\conf\spring-security.xml配置文件中(该配置文件名称和路径仅为举例,任何指定路径和配置文件名称均可实现相应功能,因此本示例不代表任何限定),配置文件由spring框架加载。

cookie安全处理组件:系统检测当前请求是否是cookie安全白名单,如果是白名单则不作处理;如果不是白名单,则设置响应的cookie为安全cookie:设置secure和httponly属性为true;secure为true,表示cookie会被以安全的形式向服务器传输,也就是只能在https连接中被浏览器传递到服务器端进行会话验证,如果是http连接则不会传递该信息,所以不会被窃取到cookie的具体内容。httponly为true,那么通过程序(js脚本、applet等)将无法读取到cookie信息,这样能有效的防止xss攻击。

权限过滤组件:将所有的资源和权限对应关系建立起来,即定义某一资源可以被哪些角色访问。等用户登录系统时,决定当前用户具有的角色,是否有足够的权限去访问某些资源;最终呈现他可访问的资源。用户进入系统后,发起的所有请求也要经过该组件,决定当前用户是否发起了超过其权限的请求。

具体运作时,如图2所示,app的使用者向app页面(交互式数据系统的人机交互输入)输入请求,app页面将该请求通过数据输入接口发送至防护模块,防护模块中的各个模块按照指定顺序依次对请求数据进行安全检测,图2中给出了各个模块进行检测的示例,如url是否授权检测,请求是否具有攻击性检测,参数检验检测,......,直至完成所有检测后,将检测通过结果以及数据通过数据输出接口返给app具体执行引擎(交互式数据系统的数据处理模块);引擎将响应结果反馈至页面;在一些情况下,反馈结果需对是否跨站脚本攻击进行处理,此时,页面将跨站脚本攻待检测数据通过数据输入接口发送至防护模块进行检测,通过检测后在页面显示。应注意的是,在防护模块的检测过程中,任何一项检测没有通过,则该请求或者数据不会被传递至app具体执行引擎(交互式数据系统的数据处理模块),从而防止app的具体核心处理模块被攻击。

另一具体示例中,用户操作发起请求后,按照如下步骤进行处理(1)进入cas单点退出过滤器。如果是退出系统的请求,则取消登录凭证,并自动调转到登录页面;(2)进入请求前缀校验过滤器。如果是调用系统接口请求,则验证请求的用户身份凭证是否合法;(3)进入从哪个页面链接过来的验证过滤器,保障请求是否从信任的页面链接发起的;(4)进入url是否在系统已经配置的验证过滤器,保障请求的是合法资源;(5)进入参数校验组件,保障请求参数合法有效;(6)进入防csrf攻击组件;(7)进入防doc攻击组件;(8)进入权限过滤组件;(9)如果编排时配置了个性化/隐私保护的安全能力,则进入个性化/隐私保护安全组件;(10)实际业务处理过程(例如数据查询或api接口调用等);在此处理过程中,调用日志组件,记录操作日志和运行日志;(11)完成业务处理后,进入cookie安全处理组件;(12)最终响应用户请求。

图3则给出了个性化安全需求的动态解析及校验处理流程;app的使用者向页面发出请求;安全模块接收页面传输的信息,并对其进行安全检查;如果通过检查则由app执行引擎处理寻找请求与安全配置信息间的关联性;将对应的安全配置信息发送至存储介质;由app执行引擎解析安全处理类型;动态执行安全检查;通过验证后,调用ui运行期执行业务;返回响应结果并在页面显示。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1