本期推荐
本栏目责任编辑:唐一东
SQL 注入式攻击下的数据库安全——SQL Server 下SQL 注入攻击的有效
防范
史旭宁1,姜楠2,蒋青山3
(1.铜川职业技术学院,陕西铜川727031;2.西安交通大学,陕西西安710049;3.华能铜川照金煤电有限公司,陕西铜川727031)
摘要:随着数据库技术和网络技术的迅速成长,数据库已经应用到各行各业,同时,数据的安全问题也随之推上浪尖。本
文将从应用的角度出发,论述了SQL Server 安全措施;同时,本文对SQL 注入式攻击的原理、步骤、危害进行必要讲解,并着重阐述对SQL 注入式攻击的防范措施。
关键词:数据库安全;SQL 注入;身份认证;数据加密;字符规范中图分类号:TP311
文献标识码:A
文章编号:1009-3044(2021)09-0025-02
开放科学(资源服务)标识码(OSID ):
1绪论
随着数据库和网络技术的迅速成长,数据库已经应用到各行各业,所谓的“模式”也随之发生变化,就当下而言,最为主流的模式便是Web 前台加后台服务器的模式。后台服务器最核心的部分当属后台数据库,故一个服务器的Web 服务器是否安全,很大程度上取决于Web 端的安全控制,以及数据库的安全检测与防护。尽管开发者早已认识到这一点,但数据库攻击的案例却屡见不鲜:从互联网刚兴起时雅虎的数据泄漏,到2011年CSDN 的用户信息被盗,再到“12306”的数据泄漏等等。这一切都在告诉我们:web 服务器的安全还是要不断提升。
2数据库的安全机制
数据库的安全机制一般需要满足三方面要求:首先,需要
满足数据库、数据语义、操作等方面的完整性;其次,数据库授权了用户才能获得数据、并且对用户的行为进行记录,审计;再次,数据库授权用户对数据获取和各种操作[1]。此安全机制包含以下6项内容:2.1身份认证
身份认证是数据库管理系统提供的第一道保护屏障,这个
证明形式不是唯一的,有着多样性,比如动态口令鉴别,静态口令鉴别,数字证书鉴别,生物特征鉴别,智能卡识别等。2.2访问控制
访问控制是数据库安全中的核心技术,主要指访问主体对访问客体权限的定义,并将其登记到数据字典中进行合法权限的检查,主要有登录权限、确定访问权限以及操作权限3个部分[2]。
2.3系统文件
作为数据库系统的运行平台,操作系统(OS )为数据库系统
提供着安全保护,相反,因为数据库以文件的形式存在于操作系统中,而且操作系统自身的安全配置和漏洞也会引发不安全事件,入侵者也会因为OS 的原因窃取或篡改数据库文件和数据,所以,使用安全性高一些的系统,对OS 进行安全配置和系统修补,加强OS 的安全管理,对其用户管理和权限进行合理分配,也是数据库管理系统安全机制管理手段之一[3]。2.4数据库加密
数据库的加密包含加密保护存储的敏感数据,以及加密保护传输过程来控制非法访问,从而数据库的加密包含加密保护存储的敏感数据,以及加密保护传输过程来控制非法访问[4],加密过程首先是将明文数据通过使用加密技术加密成密文数据,查询时,进行逆向操作,又将密文数据去掉解密,还原成明文数据,这样即便硬盘丢失也不会担心泄密,当然成本也随之提高。2.5数据库审计
数据库审计包括实时监控数据库,记录各类操作行为的机
制,数据库审计能够跟踪、定位,及时发现数据库系统的异常使用,阻断各类违规操作,总之,管理人员可以通过数据库审计得到有效的预警机制和行为记录。2.6.备份和恢复
任何一个数据库系统总是避免不了会发生故障,所以,定期对数据库进行备份是非常必要的,为了提高数据恢复的概率,可以将数据保存在多个存储设备中,并将最初的数据文件进行备份。
收稿日期:2020-05-26作者简介:史旭宁(1981—),女,陕西铜川人,讲师,硕士,主要研究方向为计算机应用;姜楠(2000—),女,陕西铜川人,本科在读,西安
交通大学电信学部,主要研究方向为计算机科学与技术;蒋青山(1981—)男,工程师,本科,主要研究方向为发电厂设备自动化。
25
本栏目责任编辑:唐一东
本期推荐Computer Knowledge and Technology 电脑知识与技术第17卷第9期(2021年3月)
3SQL 注入式攻击
SQL 注入式攻击,简单地说就是利用程序漏洞,绕过程序的权限,将SQL 命令插入到页面请求的查询字符串或者输入域进行攻击,结果是轻则获得敏感信息和数据,重则控制服务器。
图1是典型的SQL
注入式攻击图:
图1SQL 注入式攻击图
3.1攻击原理
SQL 注入式攻击有直接攻击法和间接攻击法两种,前者是直接将代码插入到用户输入变量,该变量与SQL 命令串联在一起,故称之为直接攻击法;后者是将恶意代码注入字符串中,该
字符串存于表中并连接动态SQL 命令来执行恶意SQL 代码[5]
下面将再现一个最简单的登录页面login.asp ,源代码如图2所示:
图2登录页面login.asp 源代码
登录验证脚本checkuser.asp 如图3所示
:
图3登录验证脚本checkuser.asp
此Web 网站用户栏若输入sysop'and 1=1--,则在checkus⁃er.asp 中,“--”为注释语句。SQL 语句中已经正确放入输入的SQL 条件并执行,最终获取到自己想要的各种信息。3.2攻击步骤
3.2.1SQL 注入漏洞的判断
首先,定期查看IIS 日志中的文件信息,如果IIS 中的日志
数量持续增加,就有SQL 注入攻击的可能;其次,如果数据库出现一些含有大量外来信息的临时的表格,而且这些表格与我们平时的表格有不同的结构,这也是受到SQL 注入攻击的一种现象;最后,可以依据检验用户输入的数据等信息进行判断。web端登录
检测注入漏洞最简单的方法是在用户输入变量的时候,输用一个单引号"'",比如在登录时,用户名填为:1',因为这个额外的单引号,有缺陷的代码就会结束当前的语句,并返回一个提示报错的页面或是数据库错误的提示,即说明存在SQL 注入漏洞。
SQL 注入漏洞通常存在于:(1)Web 表单输入域;
(2)UOL 的一部分SQL 查询中;(3)存储在缓存中的参数,并且这些参数要回传给服务器;(4)页面的隐藏字段。3.2.2收集信息
在SQL 进一步的攻击之前,会收集提示的数据库报错信息、了解目标系统的输出机制,判断数据库类型、了解SQL 语句、表名、字段名以及查询方式,用户的权限以及数据库和操作系统的交互程度是非常有必要的,然后根据SQL 注入漏洞与数据表名、字段名等对数据库进行攻击[6]。3.2.3提取数据
使用“having 1=1”语句枚举一个表的所有列来获得数据库的结构,获取了数据库结构便容易读出表中数据,如图4
所示:
图4提取数据
3.2.4与OS 交互的两种方式
(1)执行系统命令;
(2)攻击者可以通过读取、配置系统文件来执行命令;
3.2.5扩大影响
以攻破的主机作为主阵地,为了扩大攻击范围,使用“se⁃lect *from sysservers ”在MS SQL Server 中可查询网络中的其他主机,然后使用OPENROWSET 命令入侵其他主机事轻而易举的事情。
4数据库安全防范措施
4.1服务器安全配置
服务器的安全设置可以参见第一章的内容。主要从身份
认证、访问控制、数据库加密、数据库审计和备份、恢复等方面考虑。4.2数据加密
对数据的加密主要是防止物理性攻击。在登录服务器时
可以使用Windows 和SQL 身份认证混合模式,且将登录名称、密码等数据加密保存。鉴于有些存储过程很容易被利用,将不必要的存储过程删除,也是一个防范的措施。(下转第29页)
26
本期推荐
本栏目责任编辑:唐一东Computer Knowledge and Technology 电脑知识与技术
第17卷第9期(2021年3月)
息[6]。充分合理地利用这些信息,可以提高可靠性评估精度。通常采用贝叶斯方法将不同来源的数据进行融合,其大致过程如下:
(1)收集多种来源的可靠性信息,得到未知参数不同形式的先验分布;
(2)对多种先验分布进行相容性检验;(3)利用贝叶斯方法将通过相容性检验的先验分布,融合为一个综合的先验分布;
(4)求出现场试验数据的似然函数形式,结合综合先验分布得到后验分布;
(5)根据后验分布对参数进行贝叶斯推断,求出可靠性指标。
多源信息融合的方法能够综合利用各种可靠性信息,扩大样本容量,得到合理的可靠性评估结果[7],
其重点是对不同先验分布的相容性检验。
5结束语
微纳卫星以其自身优点能够有效增强空间优势,本文通过
分析微纳卫星的可靠性特点,介绍了微纳卫星系统单机可靠性评估的常用方法,包括基于统计分析、基于性能退化和多源信息融合的方法。对于这三种方法,给出了分析步骤和适用情
形,按照分层分级的思想,根据系统可靠性框图和数学模型,利用单机的可靠度和平均寿命等可靠性特征量,进而求出微纳卫星系统的可靠性特征量,为微纳卫星系统的可靠性评估提供参考。
参考文献:
[1]王超,闫永刚,刘清饶.可靠性分析及其在飞机零件分布中的应用[J].电脑知识与技术,2012,8(25):6149-6151.
[2]尤政.空间微系统与微纳卫星[M].北京:国防工业出版社,2013:16-36.
[3]姜兴渭.可靠性工程技术[M].哈尔滨:哈尔滨工业大学出版社,2005.
[4]么娆.航空器可靠性工程[M].北京:国防工业出版社,2017:55-98.
[5]金光.基于退化的可靠性技术:模型、方法及应用[M].北京:国防工业出版社,2014.
[6]刘本纪,龚时雨.Bayesian 可靠性评估中多源信息融合的概率模型方法[J].电子产品可靠性与环境试验,2011,29(1):10-13.[7]杜智涛,杜晓勇,魏洪峰,等.基于多源信息融合的气象无人机平台可靠性评估研究[J].测控技术,2013,32(2):133-136.
【通联编辑:梁书】
(上接第26页)4.3数据过滤和字符规范
4.3.1对于动态构造SQL 查询的场合,可用以下方法
(1)限制查询数据库账户权限。使用不同账户执行Query 、INSERT 、UPDATE 或DELETE 命令等操作。
(2)替换单引号,为了防止攻击者修改SQL 命令的含义,也就是说,把所有单独出现的一个单引号换成两个单引号。
(3)避免输入或者直接删除连字符,原因是此类查询的后面已被注释,攻击者只需要取得合法用户名,就可以轻松获得访问权限。
4.3.2使用存储过程来执行所有的查询,数据库的权限只容许在一定的存储过程中执行
限制用户可以输入的字符长度。那么大于这个长度就不
被认可,这将极大增加数据库安全系数。
保障合法数据。在服务器端和客户端分别进行数据检查,保障输入内容只包含合法数据。
使用参数化语句并尽可能使用SQL Server 数据库自带的安全参数,数据库工程师在开发产品时要尽量采用参数化语句,通过参数来传递这个变量,因为输入的变量不是直接嵌入到SQL 语句,这种方法可以提升设定执行计划能够使用的固定次数,降低了数据库的工作压力,提高了运行效率,对防范SQL 注入攻击起到了重要作用,同时也保护了用户的隐私和安全[7]。
5结束语
在互联网高速发展的背景下,SQL 注入已显然成为B/S 系
统一个很严重的安全问题。本文对数据库的安全机制,SQL 注入式攻击原理、攻击方式、类型做了详细阐述,同时重点分析了如何有效防范SQL 注入式攻击,关于如何防范还有待进一步研究探索。
参考文献:
[1]袁玫,林志英,刘劲松.网络数据库应用教程[M].北京:人民邮
电出版社,2003:13.
[2]薛玉芳,李洁琼,李亚军.数据库安全与防护性的技术研究[J].中国新技术新产品,2011(3):20.
[3]刘雪梅.基于SQL Server 数据库的安全性对策探究[J].电脑编程技巧与维护,2019(9):96-98.
[4]刘博.数据库加密技术在WEB 平台的研究与应用[D].西安:西安电子科技大学,2007.
[5]牛方华,杨大哲,刘瑞芳.电力信息系统结构化查询语言注入攻击原理及安全防护[J].山西电力,2014(4):38-40.
[6]徐嘉铭.SQL 注入攻击原理及在数据库安全中的应用[J].电脑编程技巧与维护,2009(18):104-106.
[7]于雷.SQL 数据库注入攻击的Java Web 防御对策[J].电脑迷,2017(22):27.
【通联编辑:光文玲】
29

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。