您好, 访客   登录/注册

基于SQL注入攻击漏洞问题研究

来源:用户上传      作者:

  摘   要:随着互联网的快速发展,SQL注入攻击是现阶段较为常见的攻击方式之一,也是目前应用开发所面临的重大安全隐患。本文介绍了SQL注入攻击特点、分析了SQL注入攻击原理及成因,并以东北粮网金融子系统未对用户输入的特殊字符进行过滤问题为例,此问题有可能导致系统全局存在SQL注入漏洞,容易造成敏感信息的泄露。在此基础上,针对SQL注入攻击特点,提出了防范SQL注入攻击问题的相关措施。为程序开发初学者在开发系统时建立起一套完整的安全开发规范提供帮助。
  关键词:SQL注入攻击  东北粮网  SQL攻击防范
  中图分类号:TP393                                 文献标识码:A                        文章编号:1674-098X(2019)11(a)-0143-02
  网络安全是信息化的重要基石。网络信息主要涉及个人信息、企业信息及国家的政府、军事、经济等各个领域的信息,其中大多数信息是敏感信息甚至是国家机密。东北粮网将互联网与粮食流通业务进行融合,符合国家和地方的粮食产业发展政策,对推进粮食流通体制改革,具有重大意义。东北粮网作为一站式综合服务平台,直接涉及到用户的大宗粮食交易及企业隐私。为保护用户和企业隐私,东北粮网平台本身的安全性至关重要。
  SQL注入都是非常隐蔽的,很多时候无法被发现,所以SQL注入攻击有着非常大的危害性,容易造成信息的泄露。目前有许多防范SQL注入的方法,例如,加密处理、错误消息处理、输入验证、使用参数化的过滤性语句、使用专业的漏洞扫描工具等。但是安全漏洞和攻击手段变化层出不穷,使得网络信息安全面临挑战。为了有效对SQL注入攻击漏洞进行防御,要了解 SQL 注入攻击特点、原理及成因。
  1  SQL注入攻击特点
  SQL注入攻击问题是目前网络攻击中最常见的手段之一,是影响网络安全最严重的漏洞,危险性较高。SQL注入攻击主要是由于程序员在开发过程中没有对客户端所传输到服务器端的参数进行严格的安全检查,同时SQL语句的执行引用了该参数,并且SQL语句采用字符串拼接的方式执行时,攻击者将可能在参数中插入恶意的SQL查询语句,导致服务器执行了该恶意SQL语句。SQL注入漏洞主要影响是攻击者可利用该漏洞窃取数据库中的任意内容,在某些场景下,攻击者将有可能获得数据库服务器的完全控制权限。在一定程度上SQL注入攻击超过缓冲区溢出漏洞,防火墙为了使正常网络应用程序访问服务器端的数据,必须允许从互联网到Web服务器的正向连接,当前绝大多数的防火墙不能对SQL注入漏洞进行有效的检测和防范,无法就SQL注入问题发出警报。所以,一旦web网络应用程序存在注入漏洞,攻击者就可以获得数据库访问权,从而获得数据库所在服务器的访问权。SQL注入攻击普遍存在范围广、实现容易、破坏性大等特点。
  2  SQL注入攻击原理及成因
  SQL 注入攻击是一种攻击数据库的常见攻击,常见攻击手段是攻击者通过输入问题代码,将问题代码直接嵌入到将要执行的SQL语句,然后执行SQL指令,完成修改数据库内容,窃取数据等一系列攻击行为。网络攻击者也可以利用工具入侵到有SQL注入漏洞的网站。
  3  东北粮网实例分析
  由于东北粮网金融子系统未对用户输入的特殊字符进行过滤,导致了对于用户输入的任何数据,系统是可信的,从而导致SQL注入的产生,SQL注入漏洞会导致线上数据被篡改、服务器被控制。导致整个系统存在高危安全风险。存在漏洞的代码截图如图1所示:
  通过对系统进行源代码的分析,发现该系统在框架层面没有完全屏蔽SQL注入漏洞。从而暴露出来其它漏洞类型,例如,存储性XSS、敏感信息泄露、水平越权-获取他人用户权限、垂直越权-获取管理员权限、任意上传、水平越权-遍历合同信息以及某些逻辑问题。
  4  SQL注入攻击的防范对策
  (1)使用Apache Torque处理执行SQL语句,使用数据库持久化的方式操作SQL语句。Apache Torque是一个使用关系数据库作为存储手段的Java应用程序持久化工具,可以进行数据库持久化相关操作,也可以直接执行SQL语句,东北粮网金融子系统在直接执行SQL语句时将变量作为字符串直接进行拼接并执行,导致了SQL注入漏洞。
  (2)使用Hibernate处理执行SQL语句,使用数据库持久化的方式操作SQL语句。Hibernate是一个开放源代码的对象关系映射框架,它可以对JDBC进行非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,可以进行数据库持久化相关操作,也可以自动生成SQL语句,自动执行,东北粮网系统在直接执行SQL语句时将变量作为字符串直接进行拼接并执行,导致了SQL注入漏洞。
  (3)使用预处理执行SQL语句,对所有传入SQL语句中的变量做绑定。这样,用户拼接进来的变量,无论内容是什么,都会被当做替代符号“?”所替代的值,数据库也不会把恶意用户拼接进来的数据,当做部分SQL语句去解析。
  5  结语
  SQL注入攻击漏洞是网站系统的重大安全隐患,SQL 注入攻击对系统数据库的影响非常大,本文就SQL注入攻击的特点、原理及成因进行了阐述,并且对东北粮网金融子系统的SQL 注入攻击问题进行了实例分析,提出了SQL 注入攻击防范方法。通过此次分析,希望从程序开发角度,为程序开发初学者在开发系统时提供好的安全引导,建立起一套完整的安全开发规范提供帮助,并可以很大程度上增强系统的安全性,从而为用户提供一个安全、可信的平台。
  参考文献
  [1] 叶良艳.SQL注入漏洞检测防御关键技术综述[J].安徽电子信息职业技术学院学报,2018,17(3):19-22.
  [2] 王萬兵.常见WEB攻击方法及其安全防范策略的研究[D].南昌航空大学,2017.
  [3] Karishma Varshney,R. L. Ujjwal. LsSQLIDP : Literature survey on SQL injection detection and prevention techniques[J]. Journal of Statistics and Management Systems,2019,22(2).
转载注明来源:https://www.xzbu.com/1/view-15152703.htm