基于SSM框架的Web应用安全机制研究
作者:柯芬芬,刘志华
来源:《无线互联科技》2019年第24期
        摘 要:随着互联网技术的不断发展,以Web环境作为切入点的互联网应用也越来越普及,使得Web应用安全成为时下的热点。文章主要研究如何在SSM框架中融合Shiro安全框架和部分Web漏洞攻击的防护代码,旨在设计出一个健壮性强、灵活性高的Web应用安全方案。
        关键词:Web安全;Shiro;SSM框架集
        伴随着互联网技术的不断发展与升级,企业信息化系统的建设以及网络环境也趋于完善。以Web环境作为切入点的互联网应用呈现“井喷式”发展态势,但随之而来的是Web安全问题的凸显[1]。当前主流的Web应用开发通常会采用SSM(Spring+SpringMVC+Mybatis)框架构建,其构建的Web项目能够提高项目的开发效率,降低项目开发和维护方面的成本。为了有效适应现代Web系统对安全性能的运行需求,文章考虑对SSM框架做进一步的优化,一是融合Shiro安全框架来加强系统认证与访问控制;二是集成一些Web安全漏洞的防护代码。
        1 关键技术介绍
        1.1 常见的Web安全漏洞
        阿里云安全团队发布的《2019年上半年Web应用安全报告》[2],从传统攻击的分布数据来看,Webshell攻击以29%的比例夺得榜首,SQL注入以26%的比例紧随其后,跨站脚本攻击(Cross Site Scripting,XSS)的占比为4%,可见传统的Web攻击手段备受攻击者青睐。下面对常见的Web系统安全漏洞进行详细介绍。
        1.1.1 SQL注入攻击
        SQL注入攻击是指恶意攻击者利用现有的浏览器/服务器模式(Browser/Server,B/S)架构,将恶意的结构化查询语言(Structured Query Language,SQL)通过用户请求的URL或者Web表单的输入域传递给后台程序,欺骗服务器调用SQL数据库引擎来执行恶意SQL命令,从而达到攻击的目的。缺乏经验的开发人员在编码时容易忽略对用户输入的参数进行非法性过滤处理,导致了恶意攻击者利用这一漏洞,采用SQL攻击方式来获取数据库的所有数据,更有甚者是拿到操作数据库的最高权限,对整个数据库进行增、删、改、查(CRUD)操作。
        1.1.2 XSS攻击
        XSS攻击又称跨站脚本攻击,之所以简写为XSS,是为了与层叠样式表(Cascading Style Sheets,CSS)的缩写区分开来。XSS攻击是指攻击者巧妙地将恶意脚本代码注入Web网页中,当用户浏览加载网页时,程序会自动执行恶意代码,从而实现对用户浏览器的控制,以此来达到攻击的目的。
        1.1.3 文件上传漏洞攻击
        文件上传漏洞指的是恶意攻击者将某个木马、病毒和脚本等可执行文件上传到服务器,从而达到攻击的目的。造成文件上传漏洞的原因有以下两点,一是开发人员在编写上传模块代码时没有去检查用户上传的文件类型和内容,同时也没有对上传的文件目录设置不可执行权限;二是攻击者绕开Web前端js对文件后缀的判断,篡改HTTP Header头部请求信息。
        1.2 SSM
        SSM框架采用了标准的MVC模式,将Web系统划分为View表示层、Controller控制层、Service业务逻辑层、DAO数据访问层4层。融合MVC设计模式的目的在于后台开发人员只需重点关注具体的业务逻辑,前端开发人员只关注数据的表现形式即可,大大缩减了Web系统的开发时间。
        Spring是一个可以用来生产bean的工厂轻量级框架,帮助创建对象以及管理对象之间的依赖关系,降低对象之间的耦合度,从而简化企业级Web应用程序开发。Spring MVC是Spring框架提供的一个实现了Web MVC设计模式的轻量级Web框架,主要负责请求的转发和视图管理。Mybatis框架是当前Web应用开发中流行的一种持久化ORM框架,其对JDBC进行了封装与简化,开发者无需编写相关JDBC的繁琐代码,只须关心如何编写SQL语句即可。
        1.3 Shiro
        Shiro是一个强大且易用的Java安全框架[3],能够为命令行应用、移动应用、大型网络应用以及企业应用提供安全保障。Shiro提供身份认证、授权、加密以及会话管理等功能,其中Shiro的认证功能主要是对用户的登录操作进行认证,验证用户是否拥有系统相应的身份,判断登录用户是否合法;Shiro的授权功能主要是验证某个已认证身份的用户是否拥有某些内容的访问权限,也就说认证用户想要操作应用程序资源的话需具备相应的访问权限;Shiro的会话管理功能主要是指用户成功登录应用后,在未退出应用前,其所有信息都保存在会话中,这样在多次交互过程中,应用就能够识别出当前访问的用户到底是谁。
        2 基于SSM的Web应用安全机制设计
        在SSM框架中融合Shiro安全框架的目的在于进行认证授权,对于需要访问控制的用户首先经过身份认证,认证通过后用户根据拥有的资源访问权限来访问相应的内容。采用基于角的访问控制模式,提供完善的认证授权功能。在数据库设计当中,配置系统用户表、角信息表、系统权限表3张基础表,考虑用户与角之间、角与权限之间是多对多的关系,所以还要建立用户和角关系表、角和权限关系表2张中间表。以角为中心来进行访问控制,使得全部权限都和角建立了紧密的联系。
        为了有效减少SQL,XSS注入的攻击,开发者在编写后台代码中应该对用户提交的数据进行相应的过滤和验证,尽可能减少被注入SQL和XSS代码的风险。另外考虑在Mybatis框架中设计SQL注入漏洞修复方案,在Spring框架的Java后台接口层面中设计自定义类来防止SQL和XSS代码的注入。
        3 基于SSM的Web应用安全机制实现
        3.1 集成SQL/XSS注入攻擊的防护代码
        在Spring框架的Java后台接口层面中自定义一个类实现HandlerInterceptor接口,且重写接口preHandle,postHandle和afterCompletion3种方法,封装过滤SQL/XSS注入攻击的代码,当然还需要配置,在这里就不列出相关代码。
        另外,还需要考虑在Mybatis框架中设计SQL注入漏洞修复方案,主要是在进行模糊查询like时,采用预编译机制来避免SQL语句拼接的问题。在使用in语句进行多值查询时,可使用Mybatis自带循环指令解决SQL语句动态拼接的问题。
        3.2 集成文件上传漏洞攻击的防护代码
        第一步:在Web前端js文件中通过substr或者substring方法来提取上传文件的后缀名,验证文件类型是否合法。
        第二步:Web后台代码先利用MultipartFile类来接受前端传过来的文件信息,然后通过MultipartFile类的getSize()方法检查上传的文件大小是否符合要求,借助文件类型工具类FileTypeUtil的getType()方法来获得文件类型,主要是依据文件流头部16进制字符串内容来判断上传文件类型是否合法。
        第三步:Web后台代码对上传的文件按照一定规则进行重命名,且禁止用户修改文件名。另外,文件上传成功后将真实上传路径和访问路径做一个映射,当用户在线预览或者下载文件时,直接暴露访问路径给用户即可。
        3.3 实现SSM框架与Shiro安全框架的整合
        第一步:在l文件中引入Shiro安全框架的所需jar包,可以借助Maven依赖查询工具获取最新或历史版本的jar包,但需要注意的是,Shiro框架相关的jar包版本号导入要保持一致。
        第二步:在l文件中配置Shiro的代理过滤器。
        第三步:创建Spring整合Shiro安全框架的配置文件来定制自己的Shiro服务,主要配置安全管理器securityManager、自定义的Realm、用户授权信息Cache以及Shiro的核心配置。
        第四步:自定义继承AuthorizingRealm类的Realm,主要是用来获取数据库安全数据,要求开发人员重写doGetAuthenticationInfo方法来进行身份认证登录,查询数据库判断登录
用户的身份是否合法;还需要doGetAuthorizationInfo方法来对已认证的用户身份进行权限分配。
web应用防护系统        第五步:在Controller控制器层调用Shiro的login登录方法来验证用户信息,login方法名可自定义命名。
        4 结语
        在设计基于SSM框架的Web应用安全机制过程中,一方面采用当前主流的SSM框架来提高项目的开发效率,另一方面融合Shiro安全框架、SQL注入攻击、XSS注入攻击和文件上传漏洞防护代码来加强Web系统的安全性能。由于篇幅有限,本文仅列出Web应用安全机制的具体通用设计与实现步骤。
        基金项目:江西省高校教改课题项目资助;项目编号:JXJG-18-50-1。江西省教育厅科学技术研究项目资助;项目编号:GJJ181281。
        作者简介:柯芬芬(1992— ),女,江西九江人,软件设计师,硕士;研究方向:信息安全,移动互联。
        [参考文献]
        [1]陈刚.Web系統安全问题与防护机制研究[J].无线互联科技,2019(15):108-109.
        [2]阿里云安全团队.2019年上半年Web应用安全报告[EB/OL].(2019-07-12)[2019-12-20].https://www.secpulse/archives/109268.html.
        [3]丁洁.基于Shiro的Web应用安全框架设计研究[J].信息与电脑,2018(3):38-39.
        Research on Web application security mechanism based on SSM
        Ke Fenfen, Liu Zhihua
        (Jiangxi Modern Polytechnic College, Nanchang 330095, China)
        Abstract:With the continuous development of Internet technology, Internet applications with Web environment as an entry point are becoming more and more popular, which makes Web application security a hot spot. This paper mainly studies how to integrate the protection code of Shiro security framework and some Web vulnerability att
acks in the SSM, aiming to design a robust and flexible web application security solution.