第15章数据库系统安全课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第15章数据库系统安全课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 15 数据库 系统安全 课件
- 资源描述:
-
1、 随着计算机技术的飞速发展,数据库的应用十分广泛,深入到各个领域,但随之而来产生了数据的安全问题。各种应用系统的数据库中大量数据的安全问题、敏感数据的防窃取和防篡改问题,越来越引起人们的高度重视。数据库系统作为信息的聚集体,是计算机信息系统的核心部件,其安全性至关重要,关系到企业兴衰、国家安全。因此,如何有效地保证数据库系统的安全,实现数据的保密性、完整性和有效性,已经成为业界人士探索研究的重要课题之一,本章就数据库系统安全做讨论。第15章 数据库系统安全 15.1 数据库系统安全概述 15.2 针对数据库系统的攻击 15.2.1 弱口令攻击 15.2.2 利用漏洞对数据库发起的攻击 15.2
2、.3 SQL Serever的单字节溢出攻击 15.2.4 SQL注入攻击 15.3 数据库攻击的防范措施 15.3.1 数据库攻击防范概述 15.3.2 SQL注入攻击的防范 思考题 数据库安全是指数据库的任何部分都没有受到侵害,或者没有受到未经授权的存取和修改。1数据库安全的内涵 数据库安全主要包括数据库系统安全和数据库数据安全两层含义。返回本章首页返回本章首页(1)数据库系统安全 数据库系统安全是指在系统级控制数据库的存取和使用机制,应尽可能地堵住各种潜在的漏洞,防止非法用户利用这些漏洞危害数据库系统的安全;同时保证数据库系统不因软硬件故障和灾害的影响而不能正常运行。数据库系统安全包括:
3、u硬件运行安全;u物理控制安全;u操作系统安全;u用户连接数据库需授权;u灾害、故障恢复等。返回本章首页返回本章首页(2)数据库数据安全 数据库数据安全是指在对象级控制数据库的存取和使用的机制,哪些用户可以存取指定的模式对象及在对象上允许有哪些操作。数据库数据安全包括:u有效的用户名/口令鉴别;u用户访问权限控制;u数据存取权限、方式控制;u审计跟踪;u数据加密等。返回本章首页返回本章首页2.数据库安全管理原则 对数据库系统进行安全管理规划时一般要遵循以下原则:(1)管理细分和委派原则(2)最小权限原则(3)帐号安全原则(4)有效审计原则返回本章首页返回本章首页 DBMS是专门负责数据库管理和
4、维护的计算机软件系统,是数据库系统的核心,不仅负责数据库的维护工作,还负责数据库的安全性和完整性。DBMS是与文件系统类似的软件系统,通过DBMS,应用程序和用户可以取得所需的数据。与文件系统不同的是DBMS还定义了所管理的数据之间的结构和约束关系,还提供了一些基本的数据管理和安全功能。返回本章首页返回本章首页1.数据库系统的缺陷 数据库系统的安全缺陷主要体现在以下几个方面:数据库系统安全通常与操作系统安全密切相关数据库系统安全通常被忽视数据库帐号和密码容易泄露返回本章首页返回本章首页2.数据库系统面临的威胁 数据库系统面临的安全威胁主要来自以下几个方面:物理和环境的因素事务内部故障存储介质故
5、障人为破坏病毒与黑客未经授权的数据读写与修改对数据的异常访问造成数据库系统故障数据库权限设置错误,造成数据的越权访问返回本章首页返回本章首页 数据库系统是在操作系统平台之上的最重要的系统软件,数据库系统的安全可以说是十分重要的。曾经有句话这样说:如果网络遍地是金钱,那么金钱就在数据库服务器中。随着无纸化业务环境的不断扩大,人们在数据库中存储着越来越多的敏感信息:银行账户、医疗记录、政府文件、军事机密等等,数据库系统就成为越来越有价值的攻击目标,因此确保数据库系统的安全也越来越重要。作为一种大型的系统软件,数据库系统中也存在着各种各样的安全漏洞,其中危害性较大的有缓冲区溢出、堆溢出和SQL注入等
6、。本小节将讲述一些典型的针对数据库系统的攻击。弱口令是指口令强度过低,使非授权用户容易在短时间内通过猜解或者少量的列举即可得到口令。弱口令会使非授权用户获得访问数据库的权限。这会造成机密数据泄露、损坏等严重后果。出现弱口令的原因多是在数据库安装和建立用户信息的时候,数据库管理员设置了统一且简单的访问口令,授权用户也没有及时修改默认口令。特别是在某些数据库安装的过程中,安装程序会默认建立一个空白口令的特权用户。下面是一个因为存在默认用户名和口令的实例。在2005年的1月W32.Spybot.IVQ蠕虫便是依靠空白口令的root用户感染了数以千计的Windows MySQL服务器。在MySQL的某
7、些默认配置中,mysql.user表内有4个默认条目:两个条目用于root,两个条目用于匿名账户。在主机build上,有一个用于账户root具有root特权的远程条目。如果在本地主机上,可以用空白口令以root特权进行身份验证,则可以全面控制数据库。如果在本地主机上,可以用任何用户进行身份验证,则可以guest权限访问数据库。如果在被称为build的远程主机上,可以用任何用户进行身份验证,则可以以guest权限访问数据库。在Windows主机上,root账户的存在使得任何本地用户都可以将其自己提升到本地系统级访问权限,因为MySQL默认以SYSTEM运行。而且,如果攻击者简单地将他的主机命名为
8、build,MySQL服务一旦启动,他就具有了对主机的远程系统级的访问权限。针对这一问题最好的保护是采取以下措施:(1)安装MySQL是禁止网络访问(拔掉网线或者应用全部防火墙规则)。(2)在安装之后,应立刻删除mysql.user表内除了本地主机(localhost)root账户之外的所有账户。(3)为本地主机的root账户设置复杂的口令。数据库厂商会发现自己产品中的某些安全问题,然后为自己的产品提供某些安全补丁,产品的版本随之不断升级。作为数据库的用户,如果不及时升级自己的数据库,就会面临安全威胁。下面以零长度字符串绕过MySQL身份验证漏洞攻击为例子,讲解利用漏洞对数据库的攻击。在MyS
9、QL5.0以前的版本中,MySQL通过下面语句:check_scramble_323(passwd,thd-scramble,(ulong*)acl_user_tmp-salt)=0来判断用户输入的密码是否正确,然而在check_scramble_323()函数内可以看到:bool check_scramble_323(const char*scrambled,const char*message,ulong*hash_pass)while(*scrambled)if(*scrambled+!=(char)(*to+extra)return 1;/密码错误return 0;这里,用户可以指定一
10、个其所需长度的字符串。在这个简单的身份验证中,如果指定长度为0的字符串。在最后的循环中,循环比较scrambled字符串和MySQL所得到的字符串的每个字符,直到scrambled字符串内没有字符为止。因为scrambled字符串长度为0,根本不会进行循环比较,所以验证函数直接返回0,使得用户以0长度字符串通过身份验证。这是一个非常简单的利用数据库漏洞的例子。SQL Server 2000会监听UDP:1433端口,而且会对值为0 x02的单字节报文进行响应,返回关于SQL Server的信息。但是当单字节报文的值不是0 x02而是其他值时,SQL Server将会异常。会引起异常的值包括:0
11、 x04,导致栈溢出发生;0 x08字符,会导致对溢出;0 x0A,会引发拒绝服务攻击。另外,在一些数据库管理系统,如WinMySQLAdmin在my.ini文件中以明文形式保存了MySQL的口令信息。使得非授权的本地用户也可以访问MySQL数据库。1.SQL注入攻击原理注入攻击原理 浏览器/服务器(B/S,Browser/Server,)结构是互联网兴起后的一种网络结构模式,这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。B/S结构由服务端、浏览器和通信协议三大部分组成。如下图所示:采用这种方式构建的Web服务,经常受到SQL注入的攻击。近几年,针
12、对Web服务数据库的SQL注入攻击非常多。SQL注入可导致数据库系统中的普通用户窃取机密数据、进行权限提升等,而这种攻击方式又不需要太多计算机方面的知识,一般只要能熟练使用SQL语言即可,因此对数据库的安全构成了很大的威胁。另外,目前还有NBSI等SQL注入工具,更使得对数据库的安全受到巨大威胁。如图15.2所示为合作NBSI SQL注入攻击工具对某网站成功进行了攻击,从图中可以看出数据库中的内容。许多Web应用程序在编写时没有对用户输入数据的合法性进行检验,导致应用程序通过用户输入的数据构造SQL查询语句时存在着安全隐患。SQL注入攻击的基本思想就是在用户输入中注入一些额外的特殊字符或者SQ
13、L语句,使系统构造出来的SQL语句在执行时改变了查询条件,或者附带执行了攻击者注入的SQL语句。攻击者根据程序返回的结果,获得某些想知道的数据,这就是所谓的SQL注入。SQL注入攻击源于英文“SQL Injection Attack”。目前还没有一种标准的定义,常见的是对这种攻击形式、特点的描述。微软技术中心从两个方面进行了描述:(1)脚本注入式的攻击。(2)恶意用户输入用来影响被执行的SQL脚本。由于SQL注入攻击利用了SQL的语法,其针对的是基于数据的应用程序当中的漏洞,这使得SQL注入攻击具有广泛性。理论上说,对于所有基于SQL语言标准的数据库软件都是有效的。一个简单SQL注入攻击的示例
14、如下:通过网页提交数据 id、password以验证某个用户的登陆信息;然后通过服务器端的脚本构造如下的SQL查询语句:SELECT*FROM user WHERE ID=+id+AND PASSWORD=+password+如果用户提交的id=abc,password=123系统会验证是否有用户名为abc,密码为123的用户存在,但是攻击者会提交恶意的数据:id=abc,password=OR 1=1使得脚本语言构造的SQL查询语句变成:SELECT*FROM user WHERE ID=abc AND PASSWORD=OR 1=1因为1=1恒为真,所以攻击者就可以轻而易举的绕过密码验证。
15、目前易受到SQL注入攻击的两大系统平台组合:MySQL+PHP和SQL Server+ASP。其中MySQL和SQL Server是两种SQL数据库系统,ASP和PHP是两种服务端脚本语言,SQL注入攻击正是由于服务器脚本程序存在漏洞造成的。2.SQL注入攻击的一般步骤注入攻击的一般步骤 SQL注入攻击的手法相当灵活,在碰到意外情况时需要构造巧妙的SQL语句,从而成功获取需要的数据。总体来说,SQL注入攻击有以下几个步骤:(1)发现SQL注入位置。找到存在SQL注入漏洞的网页地址,是开始SQL注入的一步。不同的URL地址带有不同类型的参数,需要不同的方法来判断。(2)判断数据库的类型。不同厂商
16、的数据库管理系统的SQL语言虽然都基于标准的SQL语言,但是不同的产品对SQL的支持不尽相同,对SQL也有各自的扩展。而且不同的数据有不同的攻击方法,必须要区别对待。(3)通过SQL注入获取需要的数据。获得数据库中的机密数据是SQL注入攻击的主要目的。例如管理员的账户信息,登陆口令等等。(4)执行其他的操作。在取得数据库的操作权限之后,攻击者可能会采取进一步的攻击,例如上传木马以获取更高一级的系统控制权限,达到完全控制目标主机的目的。这部分内容本文不做详细讨论。3.SQL注入漏洞的判断注入漏洞的判断 一般来说,SQL注入一般存在于形如:http:/localhost/show.asp?id=X
17、X等带有参数的动态网页中,这些参数可能有一个或者多个,参数类型可能是数字型或者字符型。如果动态网页带有参数并且访问数据库,那么就有可能存在SQL注入。以下以http:/localhost/show.asp?id=XX为例进行分析,XX可能是整型,也有可能是字符串。(1)整型参数的判断 当输入的参数XX为整型时,通常show.asp中SQL语句原貌大致如下:select*from 表名 where 字段=XX,所以可以用以下步骤测试SQL注入是否存在。http:/localhost/show.asp?id=XX(附加一个单引号),此时show.asp中的SQL语句变成了select*from 表
18、名 where 字段=XX,show.asp运行异常;http:/localhost/show.asp?id=XX and 1=1,show.asp运行正常,而且与http:/localhost/show.asp?id=XX运行结果相同;http:/localhost/show.asp?id=XX and 1=2,show.asp运行异常;如果以上三步全面满足,该脚本中一定存在SQL注入漏洞。(2)字符串型参数的判断当输入的参数XX为字符串时,通常show.asp中SQL语句原貌大致如下:select*from 表名 where 字段=XX,所以可以用以下步骤测试SQL注入是否存在。http:
展开阅读全文