ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:968.72KB ,
资源ID:7087168      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7087168.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(浅谈数据库安全与Python编程技术.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

浅谈数据库安全与Python编程技术.docx

1、浅谈数据库安全与Python编程技术软件学院大作业任务书课程名称: 数据库工程实训 题 目: 浅谈数据库安全与基于Python的SQL注入 完成时间: 2015年6月10日 大作业的要求和内容:(包括实验目的、实验内容、作业要求、作业格式等)实验目的:1、检验数据库安全的基本知识点的掌握,包括数据库登陆管理、授权、角色、审核;通讯加密SSL;SQL注入攻击。2、掌握PYTHON的基本编程技巧,以及与SQL SERVER数据库的连接方法,包括pymssql数据访问技术,flask网关技术。3、运用已学的安全技术,来分析安全架构,和数据库安全问题。 实验内容:1、账户安全管理:举例账户安全管理策略

2、2、账户行为审计:在sql server中开启审计功能,并且在远端登录时,观察审计结果。3、客户端加密通讯SSL:开启客户端的加密通讯功能,观察传送的用户名和密码等数据。4、防止sql注入攻击:用flask建立一个简单的测试页面,用pymssql模块测试sql注入攻击的防范作业要求:该大作业每人一份,重点描述整个项目的总体框架,以及对python和SQLSERVER 这两种工具的认识体会。总体部分包括:1、介绍2、数据库安全技术介绍和理解3、账户安全管理4、账户行为审计5、客户端加密通讯SSL6、防止sql注入攻击7、总结 作业格式:按照学院要求的大作业格式,要求封面,和正文两部分,封面包括班

3、级、学号、姓名、指导老师等信息。正文字体为五号宋体,标题为四号宋体。 教师小结:成绩: 教 师 签 名: 教研部负责人: 学生姓名: 仁晓琴 浅谈数据库安全与基于Python的SQL注入攻击摘要随着计算机技术和通讯技术的发展,数据库系统的安全正面临着新的问题和挑战。本文阐述了数据库妥全的研究现状和具体标准,从管理的角度讨论了威胁数据安全的潜在因素及防范措施 ,在此基础上,网络服务构架技术的应用被普遍采用,许多该类型的应用程序在设计与开发时没有充分考虑到数据合法性校验问题,因此使其在应用中存在安全隐患。在横向比较 SQL 注入攻击模式的基础之上,分析了 SQL 注入攻击的特点、原理,并对常用注入

4、途径进行了总结。提出在主动式防范模型的基础上,使用输入验证、SQLServer 防御以及使用存储过程替代参数化查询相结合的形式构建出一种有效防范 SQL 注入攻击的思路和方法。并用Pymssql模块测试表明该防范模型具有较高的实用性和安全性。关键词:数据库安全,flask网关技术,SQL注入攻击,SSL,Pymssql一、数据库安全技术现在,随着计算机技术和通讯技术的发展,计算机已经应用在人们日常生活的各个方面,它已经成为推动人类社会发展的一个重要工具。虽然计算机给人们的生产和生活带来了方便,但是伴随而来的是出现了一系列亟待解决的问题,数据库系统的安全就是其中的一个重要组成部分。 1.1 数据

5、库存在的威胁与研究现状数据库的安全性是指数据库的任何部分都不允许受到恶意侵害,或XX的存取与修改 。数 据库是信 息系统 的核心部分,有价值的数据都存放在其中,这些共享的数据源,既要面对必须得可用性需求 ,又要面对被篡改、损坏和被盗取的威胁。通常情况下,数据库的破坏来自下列四个方而 :(1)系统故障 ;(2)并发 存取 而引起的数据的不一致 ;(3)转存或更新数据库 的数据有错误 ,封信事务未遵守保持数据一致性的原则;(4)人为的破坏,例如数据库被非法访问,甚至被篡改或破坏。发现威胁数据库安全 的源和检查相应的措施是数据库安全性问题的两个方面,二者缺一可。安全本身是从不断采取管理措施过程中得到

6、的。不过,安全,甚至用繁琐的措施加以保证的安全,也很有可能由于小小的疏忽而失去,那是经常发生的事。在关注安全问题的同时,首先要认识到威胁安全因素的客观存在,遗憾的是,大多数的威胁 源是看不到的,直至一切都太迟了。为了防患于未然,必须在威胁成为现实之前,对造成数据库安全威胁要有一个清晰的认识。1.1.1 篡改篡改是指对数据库中的数据XX进行修改,使其失去了原来的真实性。篡改的形式具有多样性,但是有一点是共同的 ,即造成影响之 前很难发现它 。篡 改是 由人为因素而产生的,一般来说,发生这种人为篡改有以下原因:个人利益驱动、隐藏证据、恶作剧、无知 。1.1.2 损坏计算机信息系统中数据的真正丢失是

7、数据库安全性所面临的一个客观存在的威胁。其表现的形式是:表和整个数据库或部分被删除或破坏。产生损坏的原因有:破坏、恶作剧、病毒。破坏往往都带有明显的作案动机,解决起来相对比较困难。之所以难,是因为这些破坏的人到底是来自内部还是外部时间很难认识,很难说得清楚 。恶作剧往往处于好奇 给数据库造成 了破坏。这些人通过某种方式访问数据库的程序,哪怕对数据作级小的修改,都可能使全部数据变得可读 。计算机病毒任信息系统中能感染的范围非常大,因此,采取必要有效的措施进行防护很必要。最简单的办法是限制来自外部的数据源、磁盘或在线服务的访问,并采用性能好的病毒检查程序对所有引入的数据进行 强制性检查 。1.1.

8、3 窃取窃取一般是对敏感数据的访问完成的。窃取的方法除了将数据拷贝到软盘之类的可 移动的介质上外,也可以把数据打印后取走。窃取的主要原因有:工商业间谍、将要离开的员工、被窃取的数据可能比想象中的更有价值 。1.2 数据库安全的研究现状在国际上,有关数据库系统的安全性的研究起步的比较早,很多国家的政府机关和一些大型企业的科研部门都投资了很多的金钱,开展了许多的实验和研讨,并且也已经获得了比较好的研究成果。从1970年开始,美国的国防部就开展了有关数据库系统的多级安全机制的研究工作,这项研究内容主要有数据库系统安全性的需求、建立安全模型、数据仓库的保密、数据库系统的推理控制等。另外在国际上也产生了

9、一批安全性级别比较高的开发软件:如SYBASE,ORACLE等的安全级别都达到了B级。1985年12月,美国国防部依据军队对计算机系统的安全需求,制定了可信计算机系统安全评估标准TCSEC,这个评估标准包括4个等级、7个级别。在国内,越来越多的人也已经认识到了数据库系统安全的重要性,也纷纷的开展了有关数据库系统安全的科学研究。现在我国的数据库生产商都在自己所生产的软件产品中增加了数据库安全性方面的功能,如安全控制策略、数据库的备份与数据库的恢复,审计等。从2001年开始,我国开始执行计算机信息安全保护等级划分准则。在这个准则中,将数据库系统的安全级别划分为5个等级。虽然我国对数据库安全的研究取

10、得了一定的成就,但是由于我国开展这项工作的起步晚,底子薄,因此在国内有关数据库安全研究的理论成果和开发出来的应用软件都明显的落后于其他国家。如我国的电力、金融、保险等行业所使用的数据库软件基本上都是使用Oracle,Sysbase, Informix等开发工具开发的,而这些软件产品的安全性级别是比较低的。1.2.1 数据库安全的具体标准关于数据库安全的标准,在国内外上都没有一个具体的标准。但是在通常情况下,一个数据库如果是安全的,必须要做到以下几个方面:(1)必须做到数据库中的数据是保密的,能够阻止不合法的用户来访问数据库,能够保证数据库中的数据不被泄露和更改。(2)必须保证数据的完整性和数据

11、的一致性。数据的完整性是指保证数据库中所有的数据都必须是正确的数据。数据的一致性是指对数据库中的数据进行过若干部操作后,必须保证一切数据都处于一种一致的状态。(3)必须保证所有的数据都是可用的,也就是要能够阻止非法用户试图对数据库的破坏,并且能够对已经损坏的数据库进行及时的修复,使得数据库中的数据始终处于一个可用的状况。(4)必须保证对数据库进行的一切操作进行跟踪记录,以实现对修改和访问数据库的用户进行追踪,从而方便追查并防止否认对数据库进行的操作。1.3 数据库安全策略1.3.1 最小权利法则应用程序使用连接数据库的账户应该只用于必要的特权,有利于保护整个系统尽可能少的收到入侵者的危害。通过

12、限制用户权限,隔离了不同账户可执行的操作,用不同的用户账号执行查询,插入,更新,删除操作,可以防止原本用于执行的SELECT命令的地方却被用于执行INSERT,UPDATE或DELETE命令。1.3.2 账号安全法则禁用默认的root管理员账号,新建一个复杂的用户名和密码管理数据库。1.3.3内容加密有些网站使用SSL/SSH数据加密,但是加密技术只对数据传输过程进行加密,无法保护数据库中已有的数据库,目前对数据进行加密的数据库系统很少,可以根据系统支持的加密算法在存储时对数据进行加密,安全的保存在数据中,在检索时对数据库进行解密,实现数据的加密功能,数据库加密环节会详细分析该种技巧。1.3.

13、4 存取控制用户应该无权通过SQL语句来实现对系统命令的调用,这是注入Webshell时十分危险的漏洞。身份鉴别是访问控制的基础。对信息资源的访问还必须进行有序的控制,这是在身份鉴别后根据用户的身份进行权限的设置。访问控制的任务是:对系统内的所有的数据规定每个用户对它的操作权限。存取控制可以分为下面的3种形式:(1)自主访问控制(DAC)。就是将用户对数据库的访问权限进行控制,让所有的用户只能访问自己有权限使用的数据。当某一个用户具有对某些数据进行访问的权限时,他就可以把对这些数据的操作权限部分或者全部的传递给其他用户,这样其他的用户也获得了对这些数据的访问权。(2)强制访问控制(MAC)。它

14、的基本原理是:所有的实体都应该有自己的安全属性,并且每一个客体都应该遵循客体所规定的安全准则,主体能否对客体进行规定的动作主要取决于主体和客体之间安全属性的关系。在强制访问控制方式中,用户自己不能对自己的或者别人的操作权限进行更改,一切操作权限都需要由系统管理员来进行分配。1.4.5 系统补丁及时更新SQL SERVER的最新版本补丁,有效解决数据库漏洞问题。二、账户安全管理与行为审计2.1 账户安全管理2.1.1 认证认证是用来确认登录SQL Server的用户的登录帐号和密码的正确性,由此来验证其是否具有连接SQL Server的权限。 SQL Server 2000提供了两种确认用户的认

15、证模式:1)Windows NT认证模式。Windows NT具有用户安全性和帐号管理的机制,允许SQL Server也可以使用NT的用户名和口令。在这种模式下,用户只需要通过Windows NT的认证,就可以连接到SQL Server,而SQL Server本身也就不需要管理一套登录数据。每一个用户和组都由它的安全标识SID标识,存储在SQL Server 的master数据库的sysxlogins表的SID字段。2)混合认证模式。SQL Server也有自己的标准登录认证系统,在数据库中存储了帐号和加密的密码。混合认证模式允许用户使用Windows NT帐号登录,或者使用SQL Serve

16、r标准帐号登录到SQL Server系统。NT的用户既可以使用NT认证,也可以使用SQL Server认证。 2.1.2 授权认可授权是将一个指定通过认证的数据库用户可以使用的数据库对象、以及对这些数据库对象执行的操作的过程。授权的基本单位是许可,即单个操作。每个数据库都有自己独立的许可系统,在SQL Server中包括三种类型的许可:即对象许可、语句许可和预定义许可。2.1.3 加锁加锁指:安装完成后,移除一些不必要的存储过程、用户和角色,并严格限制访问。2.1.4 认证操作实例1)创建登录账号及访问的数据库 图2.1 创建登录名2)创建数据库用户 图2.2 创建新用户3)设置访问数据库的角

17、色 图2.3 设置数据库角色4)登录查看设置结果 图2.4 用新账号登录数据库成功登录,如查询所建的表: 图2.5 测试新账号登录成功 授权认可及加锁同理创建即可。2.2 SQL SERVER审计机制2.2.1 TCSEC的安全等级划分根据美国计算机中(nationalcomputresecurity center,NCSC)所设立的安全等级从A至D。A级系统是用户定制的,B级和C级是最常见的级别。每个级别后面跟一个数字,表明它的用户敏感程度:2是常年的级别,如C2。C2级要求有一个登陆过程,用户控制制定的资源,并检查数据跟踪。B2要求有访问控制特权,不允许用户为自己的文件设定安全等级。从内容

18、来看,这些安全级别实际上起到不安全性的事实标准,主要用于商业合同的一致性。从安全的管理角度看,真正需要的是一个成文的安全策略和用户手册。2.2.2 SQL SERVER标准审计级别SQL Server的标准审计有四个不同级别(1)0,None。SQL Server不在审计日志中记录有关登录的任何信息(缺省设置) 。(2)1,Success, SQL Server只在审计日志中记录成功登录的信息。(3)2,Failure, SQL Server只在审计日志中记录失败登录的信息。(4)3,All, SQL Server只在审计日志中记录成功登录和失败登录的信息。2.2.3 SQL SERVER C

19、2级审计的启用C2级安全是美国国家计算机安全中心(NCSC)授予那些通过“可靠计算机系统评估标准”(TCSEC)测试的系统安全等级。SQL Server中的C2级审计,就是审计达到C2评测的要求。启用语句如下:exec sp_configure show advanced option,1 GOexec sp_configure c2 audit mode,1 GORECONFIGURE GO图2.6 启用C2级审计 重启服务器查看审计日志图2.7 查看审计日志重启服务后,会在Program FilesMicrosoft SQL ServerMSSQLData文件夹中存储审计日(.trc文件)

20、,达到200M时就再产生一个新的日志文件图2.8 生成新日志文件查看C2级审计日志中的审计命令 图2.9 查看审计日志中审计命令使用内置函数fn_trace_gettable查看审计文件select*from:fn_trace_gettable(c:Program FilesMicrosoft SQL ServerMSSQLDataaudittrace_20150428095242.trc,default)图2.10 使用内置函数查看审计文件最后:客户端使用不存在的帐户8001711041登录SQL Server服务器,分别在服务端的SQL Server企业管理器、Windows事件查看器、S

21、QL事件探查器中找到该登录事件。 三、客户端加密通讯SSL3.1 SSL基本原理Secure Socket Layer,为所研发,用以保障在Internet上数据传输之安全,利用(Encryption)技术,可确保数据在网络上之传输过程中不会被截取及窃听。一般通用之规格为40 bit之安全标准,则已推出128 bit之更高安全标准,但限制出境。只要3.0版本以上之I.E.或Netscape即可支持SSL。SSL协议位于与各种协议之间,为提供安全支持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的(如TCP)之上,为高层协议提供、压缩、加密等基本

22、功能的支持。 SSL(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行、协商、交换加密等。SSL提供的服务有:1)认证用户和服务器,确保数据发送到正确的和;2)加密数据以防止数据中途被窃取;3)维护数据的完整性,确保数据在传输过程中不被改变。https是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,https的安全基础是SSL,当安装了SSL的应用证书,网页的访问都要经过SSL,此时必须把HTTP:/改为HTTPS:/才能正常访问网页。四、防范sql注入攻击目前针对WEB服务器的SQL注入攻击

23、技术层出不穷,但其内部都是利用畸形的SQL语言通过客户端浏览器与服务器之间的共享连接来实现绕过认证获取敏感信息。而为了使WEB服务器和数据库服务器能够更好的托找功能,实现公共信息交换的目的就不可避免的暴露一些可以被攻击者非法利用的安全缺陷。如何让系统管理者采取有效的防范措施阻止内部信息的泄露,将整个系统的威胁降至到最低是目前服务器防守的关键。4.1 SQL注入技术Web服务器和数据库服务器都保存着重要的数据信息,如果与web服务器的搭配不恰当会被攻击蓄意输入恶意代码导致敏感信息如电子货币、信用卡卡号的泄露,造成极大的危害。SQL注入是攻击类型的一种,是一种有效而又轻巧的渗透手段。相当一部分程序

24、员在编写代码的时候没有用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL注入。SQL注入不仅使计算机用户的敏感信息被非法浏览,修改,删除,甚至可能使用户的服务器被黑客控制,从而严重威胁网络安全。如下图所示: 图4.1 SQL注入攻击在网络安全中的位置 4.2 SQL注入攻击的原理与实现4.2.1 SQL注入攻击基本原理SQL 注入攻击主要是以合法的身份为掩护通过构建畸形SQL 语法组合,以常规输入方式将该组合作为参数传入系统后台,并结合系统自动执行该 SQL 语句来进行恶意操作。下面简要介绍 SQ

25、L 注入攻击的基本原理。假设 Web 项目中存在 users 表,其表内包含 UserId 和 Password字段。则有:(1)身份验证模块中常用的两个典型 SQL 语句:实现查询mylogin 表。select * from mylogin-返回记录内容select count(*) from mylogin-返回记录数(2)在 Web 应用程序的登录页面中,允许用户输入其用户名(UserId)和密码(Password)两个参数,并进行登录身份验证。假设登录用户名为 8001711041,密码为123。则上述 SQL 语句将变为:select * from mylogin where Us

26、erId=8001711041 and Password=123select count(*) from mylogin where userId=8001711041 and Password=123正常情况下,第条 SQL 查询如果返回一条用户记录,则说明身份验证成功;反之,则说明身份验证失败。第条SQL 查询如果返回用户记录数量为 1,则说明身份验证成功;返回值为 0 或1,则说明身份验证失败。(3) 如果分别为 UserId 和 Password 两个参数赋畸形值,则上述SQL 语句就会变为:select * from mylogin where UserId = 8001711041

27、 or 1=1-and Password =111语句中有两个判断条件,只要其中一个为真,则身份验证就会成功,而 1=1 恒为真。select count(*) from mylogin where UserId=8001711041 and 1=1-and Password=111同理,该语句中只要能确定用户名已知,则身份验证就会成功。综上所述,使用此方法还可以实现对数据库中的数据进行删除、查询、插入和更新等危险操作。4.2.2 SQL注入攻击的常用途径攻击者可以通过很多方法来达到控制数据库的目的,以下是常用途径。(1)借助扩展存储过程 (xp_cmdshell)以 SQL-Server 用

28、户的身份在数据库服务器上执行命令;(2)借助扩展存储过程 (xp_regread) 读取注册表的键值,也包括 SAM(只要 SQL-Server 是以一个本地账号运行的);(3)改变服务器设置;(4)实现跨服务器的联合查询;(5)创建客户扩展存储从而在 SQL-Server 进程内运行 exploit;(6)用“bulk insert”语句去读服务器上任何文件;(7)用 bcp 在服务器上创建任何文本文件;(8) 用 sp_OACreate,sp_OAMethod 和 sp_OAGetProperty 系统存储过程来创建 ActiveX 对象来完成 ASP 脚本可以做的任何事情。4.2 SQL

29、注入攻击防范方法SQL 注入攻击的检测分为事前检测和事后检测两种。检测的目的就是为制定和完善 Web 项目的防范模型与执行模块。所以设计主动式防范模型,在 Web 项目中合理嵌入防范SQL 注入模块是 Web 项目设计和开发者必须要考虑的问题。防范模型可以选择SQL注入攻击自动防范模型,如图1所示。 图4.2 SQL注入自动防范模型在构建执行模块时,应该考虑使用输入验证和SQLServer防御相结合的方法来实现。SQL注入攻击防范方法目前已经有很多,总结起来有以下方法:(1)在服务端正式处理之前对提交数据的合法性进行检查;(2)封装客户端提交信息;(3)替换或删除敏感字符或字符集(4)屏蔽出错

30、信息(5)不要用字串连接建立SQL查询,而使用SQL变量,因为变量不是可以执行的脚本;(6)目录最小化权限设置,给静态网页目录和动态网页目录分别设置不同的权限,尽量不给写目录权限;(7)修改或者去掉WEB服务器上默认的一些危险命令,例如ftp、cmd、wscript等,需要时在复制到相应目录;(8)数据敏感信息非常规加密,通常在程序中对口令等敏感信息加密都是采用md5函数进行加密。由于SQL注入攻击是针对应用开发过程中的编程漏洞,因此对于绝大数防火墙来说,这种攻击时可以绕过的。虽然数据库服务器的版本一直在更新,各种脚本语言本身的漏洞也越来越少,可是随着SQL注入技术的不断提高,只要WEB应用系

31、统或源编码中仍然有此类漏洞,就会潜伏着这种隐患,特别是党SQL注入攻击与其他的一些攻击工具结合时,对服务器乃至系统都是巨大的威胁,因此研究SQL注入攻击方法,如何正确的对服务器进行安全配置,如何做好代码的安全编写与用户输入的过滤检查,对于开发安全的WEB应用程序有着重要的意义。4.3 基于Python的简单案例1)创建myweb数据库,新建mylogin表图4.3 创建数据库和表2)在windows 7环境下,python3 和python3的开发工具anaconda3,创建开发环境。当需要运行 python3 编程环境时,运行 c:anaconda3scriptsspyder.exe。3)将flask的安装目录拷贝到d:盘根目录下,进入flask的安装目录,运行python setup.py build install图4.4 安装flask-0.10.14)将pymssql的安装文件拷贝到d:盘根目录下,运行easy_install pymssql-2.1.1-py3.4-win32.egg完成安装图4.5 安装pymssql-2.1.1-py3.4-win32.egg5)在d:盘根目录建立目录m

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1