Web数据库系统的安全性分析课程设计.docx
《Web数据库系统的安全性分析课程设计.docx》由会员分享,可在线阅读,更多相关《Web数据库系统的安全性分析课程设计.docx(23页珍藏版)》请在冰点文库上搜索。
Web数据库系统的安全性分析课程设计
类型:
课程设计
题目:
Web数据库系统的安全性分析
计算机和网络技术的广泛应用,给信息安全提出了更高的要求,在信息系统开发设计过程中,安全性能总是被放在首要的位置,成为信息系统生存的关键。
数据库是基于WEB信息系统的核心组成部分,面临来自外部和内部的双重威胁,对其进行加密等安全处理,是进行数据保护的有效手段。
本文介绍了几种流行的Web数据库访问技术,同时针对Web数据库的安全问题给出了一个初步的安全模型。
关键词:
数据库;Web安全;访问控制
第一章引言
随着WWW应用领域的不断拓展,人们已不满足于只用Web服务器浏览和发布静态的信息,人们需要通过它发表意见、查询数据甚至进行网上购物。
原来的静态Web页面已经满足不了用户对信息服务的动态性、交互性的要求。
这就迫切需要实现Web与数据库的交互。
Web与数据库这两者结合意味Web数据库将存储和管理大量重要数据,然儿一但它们被盗用或篡改,可能会带来巨大的政治和经济损失。
基于广域网的Web数据库访问会带来很大的安全问题。
首先是数据库的非法访问;另一方面数据通过网络传输,可能被截取、篡改。
还有黑客的攻击可能使系统瘫痪。
在动态Web不断发展的今天,人们对其依赖性也越来越强,但由于其开放性,在设计时对与信息的保密和系统的安全考虑不完备,及人们对保护数据库的安全意识薄弱,造成现在数据库攻击与破坏事件层出不穷,给人们的日常生活和经济活动造成了很大麻烦。
因此,研究网络环境下的Web数据库系统的安全保障已经成为了重要的课题。
自上世纪九十年代初我国接入Internet以来,短短十几年的发展历程,我国上网用户的总人数,1997年第一次调查结果为62万人,去年年底上升至1.11亿人。
互联网的迅速普及,更让国内电子商务的发展水到渠成。
但是,在电子商务快速发展的同时,网络安全的问题也始终笼罩在它的头上。
从最新的互联网安全威胁报告看:
大约有16%的攻击是针对电子商务的,这表明攻击者正从以出名为目的转向以获得经济利益为目的。
保证Web数据库安全,已是整个电子商务系统的当务之急、人心所向。
而无论是B2B还是B2C,Web都是它们最初的也是最基本的界面,由此Web的安全问题便突显出来,它也是整个网络安全首当其冲的要害问题。
何谓Web,通常指的是WWW(WorldWideWeb)的简称,Web最初是以开发一个人类知识为目的并为某一项目的协作者提供相关信息及交流思想的途径。
Web采用了C/S的软件体系结构,为了发布信息的通用性,Web依赖于共同的寻址句法,共同的协议集,数据格式的协商处理。
由于Web的开放性、灵活性以及其空前广泛的应用,Web站点的建立日渐增加。
同时,从国际WWW安全小组CERT(ComouterEmergencyResponseTeam)的统计资料看,Internet中与Web相关的安全事故也呈上升趋势。
为此,W3组织、各大学、研究机构以及一些公司为了保证Web的安全性,从各种途径对其进行了广泛的研究。
1.1本课题的研究意义
目前Web技术与数据库管理系统(DBMS)相互融合领域的研究已成为热点方向之一,数据库厂家和Web公司也纷纷推出各自的产品及中间件来支持Web技术和DBMS的融合,将两者取长补短,发挥其各自的优势,使用户可以在Web浏览器上方便地检索数据库的内容。
但由于Internet本身并没有提供任何安全机制,只要Web站点和Internet连通,就可能被任何人访问。
用户已不再受时间、地域的限制,完全可以不按规定的操作流程进行操作,可以直接输入地址访问数据库,或随心所欲地采用标签、超级链接,或频繁使用Back、Fefresh等操作,对后台数据库构成直接威胁。
因此,研究基于Web的数据库安全技术对于信息系统的安全保护有着重要的现实意义。
1.2本论文的目的、内容及作者的主要贡献
在Web数据库中,大量信息被集中和存储在数据库中并且在与Internet相连接的计算机和终端之间传输。
虽然在Web安全性问题上国内外已作了研究,但是在重要的数据交换行为中,它对于抵御外界攻击的能力仍然显得十分脆弱。
本文从介绍几种流行的Web数据库访问技术出发,针对Web数据库的安全问题,建立一个Web数据库安全体系的初步模型,并对数据库系统的安全控制进行了详细阐述。
指出安全问题应以预防为主,应该在构建Web数据库服务器时,有意识地加强数据库服务器某方面的防范措施。
希望能提高人们对Web数据库安全防范的认识。
第二章Web数据库的研究现状及设计目标
2.1相近研究课题的特点及优缺点分析
近年来,人们对于Web数据库安全问题的关注呈上升趋势,但由于其专业性、复杂性,Web数据库的安全防护并未达到理想的成果。
而对于其防范措施也是仁者见仁,智者见智。
如对身份认证机制的研究最方便的方法是设置口令法。
在设置口令的方法中,系统给每个合法用户分配一个唯一的UserID和Password。
但是,由于Password的先天不足,其可靠程度极差,容易被他人猜出或测得。
因此,设置口令法对安全强度要求比较高的系统不适用。
近年来,一些人提出更加有效的身份认证技术。
例如智能卡技术,物理特征(指纹,声纹,手图等)认证技术等具有高强度的身份认证技术日益成熟,并取得了不少应用成果。
但由于其技术,经济等方面的原因并不能普遍推广。
只有一些对安全强度要求比较高的系统,并在一定技术,经济条件下才会用到。
同时,一些文章也有很多值得我们借鉴的地方。
如曾爱林在《基于Web的网络数据安全体系的建立与完善》中明了的介绍Web数据库的几种访问技术,并针对Web数据库的安全问题,建立了一个Web数据库安全体系的初步模型,指出安全问题应以预防为主,应该在构建Web数据库服务器时,及时进行漏洞检测、风险评估,根据检测结果,有意识地加强数据库服务器某方面的防范措施。
窦丽华,蒋庆华,等人在《基于Web的信息系统安全研究》中研究了基于Web的信息系统的安全问题及如何充分并合理地利用操作系统、Web服务器和数据库管理系统所提供的安全设置,以有效地保证信息系统的安全性。
利用应用程序所具有的灵活性,可以弥补操作系统、Web服务器和数据库管理系统的安全漏洞,结合某单位业务信息系统的案例,分别从操作系统、Web服务器、数据库管理系统、应用程序4个方面对安全问题进行分析,同时给出了建议。
Web数据库的安全防护是一条长远的路,只有通过不断地改进和完善,不断地实践,才能有效的防范入侵。
2.2现行研究存在的问题及解决办法
Web数据库的安全是一个系统性,综合性的问题,而且其涉及的范围很广,因此,在进行系统设计时不能将它孤立考虑,只有结合实际层层设防,这个问题才能得到有效的解决。
实际上,任何一层的安全仅利用一种安全技术都不可能提供所有安全服务和抵抗所有可能攻击,任何一个实际的系统也不可能采用过多的安全策略。
任何安全措施都是相对的,只能根据具体的应用对象,权衡安全要求与所需花费的代价来进行选择适当的安全策略。
还应看到,和其它技术一样,入侵者的手段也在不断提高。
安全防范是一个永久性的问题,只有通过不断地改进和完善安全手段,才能保证系统的正常运行,才能提高系统的可靠性。
2.3本课题要达到的设计目标
数据库系统主要是为用户提供完善方便的信息和数据服务,实现数据信息的共享。
设计数据库安全系统的目的,是要合理有效地解决数据库中的数据信息的共享问题。
在安全的数据库中,既要保证授权的合法用户对数据的有效存取,又能严格拒绝非法用户的攻击企图。
具体地说,数据库安全系统的设计目标主要有以下3个方面:
(1)数据的完整性
数据的完整性指数据的正确性、一致性和相容性。
系统只允许授权的合法用户存取数据库中的数据信息,并且以不破坏数据的完整性为前提。
同时,系统应该杜绝非法用户对数据信息进行任何存取操作,主要包括窃取和破坏。
由于多个程序并发存取同一个数据库中的数据,可能会造成数据的不一致性。
因此,安全系统要具有保证数据一致性的功能。
(2)数据的可用性
当系统授权的合法用户申请存取有权存取的数据时,安全系统应该尽量减小对合法操作的影响。
换句话说,采用的安全机制不能明显降低数据库系统的操作性能。
(3)数据的保密性
安全系统应该提供一个高强度的加密方案,对数据库中的机敏数据进行加密处理。
只有当系统的合法用户访问有权访问的数据时,系统才把相应的数据进行解密操作;否则,系统应保持机敏数据的加密状态,以防止非法用户窃取到明文信息,对系统进行攻击。
第三章Web数据库的访问技术及安全分析
3.1Web数据库的安全威胁
为了让数据库能为处于网络上的用户服务而暴露在网络中,网络上的任何用户都可以访问这个数据库,这种情况下对数据库访问的控制只能通过用户控制既用户名/密码来进行。
任何知道密码的用户都可以访问,这增加了密码保护管理的难度,同时用户名/密码通过Internet传输很容易被人窃取。
其次,数据应用放读取的数据是通过Web传输,而这些数据缺乏有效的安全措施保护,从而可能被截取、篡改。
另外,Web数据库中存储着大量的数据信息,往往成为信息系统的关键,这就需要数据库及数据库所在的计算机能够安全运行。
数据库放在Internet中很容易受到黑客的各种攻击。
随着网络信息系统的应用,数据库远程访问的安全问题日益突出。
这个问题可采用网络传输加密,用户身份认证等安全措施解决。
但由于日前的主流数据的网络传输部分都由数据库厂家来完成,恰恰缺少这些安全措施,因此上述安全技术在普通的数据库系统中难以直接应用。
另外利用操作系统和数据库管理系统提供的安全保护功能是常用的数据库安全解决方案。
但是Internet本身并没有提供任何安全机制,只要Web站点和Internet连通,就可能被任何人访问。
Web数据库受到的威胁大致包括泄漏、窃取、窜改、冒充、延迟、重传、遗失、越权存取数据、否认已收送数据及侵犯隐私权等。
例如用ASP+Access的主要安全隐患来自Access数据库有可能被下载的漏洞。
用Access做后台数据库时,如果不对Access(*.mdb)的路径和数据库名称进行安全设置,那么该数据库就有被窃取下载的可能。
现实生活中许多使用者为了记忆方便,各种证卡习惯性地使用同一密码,如果被下载的Access的信息放有用户名称、密码口令、资金帐户等重要信息,一旦一个密码泄漏,将会波及其它密码失效,甚至会给用户带来重大损失,这非常危险。
Access安全威胁主要有以下几个原因:
(1)Access数据库地址、路径过于简单
Access数据库被下载,主要是存放数据库的路径和数据库名称被获知。
一般情况下,网络黑客先从网站的普通访问中得到“用户网站主IP地址”,然后,通过访问有数据库交互功能的下级子目录(例如通过表单等),推断到存有数据库文件的有效路径(显示在地址栏里),再通过查看源代码获知数据库文件名(点鼠标右键即可),然后在地址栏里输入含*.mdb的地址就可得到Access数据库,从而获得数据表信息。
例如,用户建立的yuangong.mdb(员工人事信息库)放在虚拟目录/work下,如果没有事先对yuangong.mdb进行安全加密处理,那么在浏览器的地址栏键入:
“http:
//用户网站主IP地址/work/yuangong.mdb”,yuangong.mdb整个文件就会被轻易下载。
文件中所有的重要数据信息就会被别人轻易窃取。
(2)使用网络免费软件所导致的数据安全问题
由于许多网络管员没有足够的时间与精力开发具有针对性的应用程序,如聊天室、bbs论坛、留言板、网络Office办公软件等,而多是采用直接从网上下载的方法来满足急用。
这些程序的源代码多是公开的,所使用的数据库名、存放路径基本无秘密可言,如果安全措施不力,不加处理就拿来使用,会给数据库的安全带来非常大的危险。
(3)服务器操作系统的安全隐患
现在使用WindowsNT/2000Server作为服务器操作系统的用户非常主流,由于Windows2000Server目录权限的默认设置安全性较差。
很多网管只知道让Web服务器运行起来,很少对NTFS进行权限设置,有的服务器甚至未禁止对文件目录的访问控制,因此,必然会带来很大安全漏洞。
如果使用FAT分区,那么ASP程序中的FileAccess组件的FileSystemObiect对象就可以对大部分文件(主要是文本文件)进行读写、目录操作、文件复制、更名、删除、修改,还可以下载FAT分区上的任何文件。
由于ASP程序采用的是非编译性语言,程序源代码的安全性非常低,任何人只要进入站点,就可以获得源代码,从而造成ASP应用程序源代码的泄露。
(4)程序设计中的安全隐患
大多数ASP程序利用表单(Form)实现与用户交互的功能,而相应的内容会反映在浏览器的地址栏中,如果不采用适当的安全措施,只要记下这些内容,就可以绕过验证,直接进入某一页面。
例如在浏览器中键入“……some.ASP?
id=1”,即可不经过表单页面直接进入满足“id=1”条件的页面。
因此,在设计验证或注册页面时,必须采取特殊措施来避免此类问题的发生,以提高数据库的安全性。
有的设计者出于安全考虑,将ASP应用程序中Access的连接语句另外存取,命名为conn.inc,其代码为:
<!
--#includefile="conn.inc"-->认为这样以来Access数据库就转藏起来,客户端就得不到数据库的真实路径和名称,其实.inc文件通过网络也很容易被下载,即使对Access所在文件夹做了变动,文件路径也会暴露无疑。
3.2Web数据库访问技术
Web是目前Internet上发展最快也是Internet网上最重要的信息检索手段。
为了进行网上数据的高效存取,实现交互动态Web页面,就必须以大量数据资源为基础,因此必然要引入数据库系统,于是出现了Web数据库。
许多数据库和WWW商家都把数据库与Web的连接性作为发展战略的一个重要组成部分。
3.2.1CGI/API技术
通用网关接口,是一种使用最早的Web数据库连接技术,它作为Web服务器与数据库服务器的中间件,负责管理两者的通信并提供应用程序服务。
用户使用Web浏览器以THML形式向Web服务器提出访问数据库的请求,Web服务器收到请求后,通过CGI将HTML转化为SQL来访问Web数据库,查询结果再通过CGI转化为HTML形式,送回浏览器。
从而完成浏览器与数据库的交互。
针对CGI的低效问题,人们有开发了API(ApplicationProgrammingInterface),API通常以动态连接库(DLL)的方式提供,驻留在Web服务器上的程序,作用与CGI相似,扩展Web服务器的功能,其连接模型见图1。
WebAPI技术最大特点是与Web服务器处于同一地址空间,因此执行效率比较高。
图1CGI/APIWeb数据库连接模型
按Web数据库漏洞的成因大致分为:
(1)配置不当而形成的Web数据库漏洞
大多数的Web服务器都提供有两种方式存储CGI/API程序:
将CGI/API程序统一保存在一个特定目录下;将CGI/API程序与HTML文档及图像一并存放。
由于HTML文档可直接被用户访问,因此如果以第二种方式存储CGI/API程序,就有可能让用户阅读或下载CGI/API程序从而达到被其利用的目的。
(2)编写CGI/API程序语言自身缺陷导致的Web数据库安全隐患
目前编写CGI/API程序的语言主要有Shell脚本、Perl脚本和C语言。
C语言对串的处理功能不强。
在处理串时一般是建立一个预定义空间来收集用户的输入。
当用户的输入数据越界时容易造成缓冲区溢出。
(3)过分相信用户的输入信息而形成的Web数据库漏洞
在许多考虑不全的CGI/API程序中,总是期待用户输入的数据是按照预期格式定义的和可预料的。
但是,用户的输入存在多种绕过这些预定义格式的可能,而给脚本发送一些随机的数据。
(4)CGI/API程序中没有过滤掉某些特殊字符而形成的安全漏洞
例如,没有过滤“../”,易泄露系统文件;没有过滤“$”,易导致网页中的敏感信息泄露等。
3.2.2ASP技术
ASP(ActiveServerPage)技术是Microsoft开发的新技术,它结合了CGI程序和API技术的优点,把HTML,Script,ActiveX组件有机的结合起来,生成交互性,高效率的Web服务器应用程序。
ASP脚本可以多种方式访问数据库,使用最多的是ADO(ActiveDataObject)方式。
在这种方式中,ASP对数据库的访问主要是通过内置对象DAC(DatabaseAccessComponent)使用数据库访问软件SDO来实现的,可以实现与任何ODBC兼容数据库或OLEDB数据源的高性能连接。
ADO允许网络开发者方便地将一个DB与一个“激活”的网页相连接,以便存取和操作数据。
ASP应用程序是在服务器端运行,而不是在浏览器运行,实现了ASP的浏览器的无关性。
图2ASPWeb数据库连接模型
3.2.2.1ASPWeb数据库的安全漏洞
(1)ACCESS数据库被下载的漏洞
通常用户可猜到服务器的数据库的名字和路径,那将是一个非常可怕事情,因为很多网站习惯把用户注册的信息和密码放在数据中,一旦补攻击者下载,会给网站造成不可估量的损失。
如下即可下载数据库aa.mdb
(2)引号造成的漏洞
很多网站把注册用户名和密码放到数据库中,在登录程序中用以下SQL语句来查询数据库以核对数据。
<%
dimconn,rs
Setconn=Server.CreateObject("ADODB.Connection")
conn.Open"Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath("test1.mdb")
setrs=server.createobject("adodb.recordset")
rs.locktype=3
rs.cursortype=0
No=Request("password")
Name=Request("userName")
rs.open"Select*FromuserWhere密码='"&No&"'And姓名='"&Name&"'",connIfrsIsNothingThen
...
EndIf
...
%>
此时,攻击者只要构造一个这样的密:
nihao'or'1'=1,那可通过数据验证。
为什么呢?
请看最后生成的查询语句就知到了。
rs.open"Select*FromuserWhere密码='nihao'or'1'='1'And姓名='"&Name&"'",conn'1'='1'永远为TRUE所以通过了验证。
(3)URL直接请求漏洞
如果攻击者知道了一个ASP页面的路径和文件名,而这个文件又要经过验证才能进入,但是用户直接请求包含ASP文件路径和文件名的URL,则有可能进入到该页面。
甚至攻击者可以伪造一些参数挂靠在URL后面形成一个GET类型的HTTP请求,而服务器端正好是使用Querystring环境变量来采集数据或者根本没有指定接受数据的方式,用户伪造的参数即被服务器端验证。
通常攻击的这个文件在网站中并没有提供链接,是系统维护员远程操作的入口。
采用上面介绍的特殊用户名的密码构造方式,就有可能入侵到本来只有系统管理员才可以进入的页面。
3.2.2.2ASPWeb数据库的安全防护
(1)防护Access数据库被下载的漏洞
解决这个漏洞的方法是使用不规则的数据库名字和路径。
首先,为你的数据库文件名称起个复杂的不规则的名字,并把他放在多级目录下。
程序员在设计网站数据库时,经常会不自觉地给数据库起一个与网站主题非常接近的名字,这就给攻击者留下了可以乘之机。
如:
一个卖东西的网上购物网站,其后台数据库起名为shopping.mdb或者ebuy.mdb等可能会被攻击者猜测出的名字。
具有比较好的保密性的文件名一般要包括一些特殊的字符,如字母和数字的混合等。
尽量不要使用规则的单词或者单词的组合作为数据库及其他需要保密的文件的文件名。
例如,给你的数据库起名为ax35t7x.mdb,这样的文件名攻击者就很难猜出来。
其次,把数据库文件放到多级目录之下,目录名称也尽量不要太规则。
有的程序员喜欢把网站的各类文件分门别类地放置在不同的文件夹之下,并且给这些文件夹起一个能代表其中所放置的文件属性的名字。
如:
把数据库文件放置在\database\some.mdb,这也很容易被攻击者猜测出来。
因此,像数据库这类需要特别注意安全性的文件尽量不要放在含义明显的文件夹之下,适当地构造一些不规则的文件目录,然后把数据库文件放到用户所构造的多级不规则目录之下。
例如,把数据库文件放到:
\ddaa9\iop76\ss5y6\some.mdb,这样攻击者要想通过猜测来获得数据库的名字和路径就非常的难。
(2)防护引号造成的漏洞
解决这个漏洞的方法是修改单引号的使用。
对SQL语句中的单引号进行修改,使用像下面的函数来转换。
Functionsqlstr(data)
Sqlstr="'"&Replace(data,"'","''")&"'"
Endfunction
把SQL中可能存在的单引号换成双单引号连用的形式,这就避免了因单引号的前后匹配造成的攻击者饶过用户名和密码验证的漏洞。
通常这样使用这个函数:
......
sql="select*fromuserwhereusername="
sql=sql&sqlstr(username)
......
%>
这样,即使攻击者构造了诸如'nihao'or'1'='1'这样的用户名或者密码,经过sqlstr函数的运算,其结果为:
rs.open"Select*FromuserWhere密码='nihao''or密码'1'<>'1'And姓名='"&Name&"'0,conn
这样就不会产生因or运算符导致SQL判断永远为true的情况。
(3)防护URL直接请求漏洞
解决这个漏洞的方法是使用附加的检验程序结合特殊的Session变量值。
通常重要的页面在进入之前需要用户名和口令的验证,可以把这个验证的程序做在真正的页面之前。
如果在验证的程序中通过了用户的用户名和口令,则使用Session变量记录下用户输入的用户名和口令,如Session("h9as3u8")=username&password,这个Session变量的名字很怪,一般来说攻击者是猜不到的。
通过用户的用户名和口令之后,再使用Response对象的Redirect方法重定向到重要的页面。
在这个重要页面的开头再次检验Session变量的值,其值不仅要求非空,而且要求是由特定的用户名/密码组合成的字符串。
如果发现不符合的情况,立即终止程序的执行(使用Response.end方法)或者显示警告的信息。
3.2.3Java/JDBC技术
Java是SUN公司发布的一种面向对象的程序设计语言,它以其独特的平台独立性、稳固性、安全性以及对网络提供的良好支持而成为Web数据库的一个强有力的开发工具。
Java语言的标准开发包中包含了一套抽象窗口工具库AWT(abstractwindowstoolkit),使用应用程序的界面