版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE24题目:Web数据库系统的安全性分析摘要计算机和网络技术的广泛应用,给信息安全提出了更高的要求,在信息系统开发设计过程中,安全性能总是被放在首要的位置,成为信息系统生存的关键。数据库是基于WEB信息系统的核心组成部分,面临来自外部和内部的双重威胁,对其进行加密等安全处理,是进行数据保护的有效手段。本文介绍了几种流行的Web数据库访问技术,同时针对Web数据库的安全问题给出了一个初步的安全模型。关键词:数据库;Web安全;访问控制
SummaryThewideapplicationsofcomputerandInternettechnologycallforahigherdemandontheinformationsecurity.Intheprocessofexploringanddesigninganinformationsystem,securityhasalwaysbeengiventhefirstpriority,whichiscriticalforthesurvivaloftheinformationsystem.AsthenuclearpartofWEBinformationsystem,databasefacesthedoublethreatscominginternallyandexternally.Dosuchasencryptionsecurityprocessbecomestheeffectivemeansfordataprotection.SeveralpopularaccesstechnologiesareintroducedandaprimarysecuritymodelofWebDatabaseisgiveninthepaper.Keywords:Database;Websafety;accesscontrol
目录TOC\o"1-4"\h\z\u第一章引言 61.1本课题的研究意义 71.2本论文的目的、内容及作者的主要贡献 7第二章Web数据库的研究现状及设计目标 82.1相近研究课题的特点及优缺点分析 82.2现行研究存在的问题及解决办法 82.3本课题要达到的设计目标 9第三章Web数据库的访问技术及安全分析 103.1Web数据库的安全威胁 103.2Web数据库访问技术 123.2.1CGI/API技术 123.2.2ASP技术 13ASPWeb数据库的安全漏洞 14ASPWeb数据库的安全防护 153.2.3Java/JDBC技术 17第四章Web数据库安全管理技术与实现 194.1Web数据库安全模型 194.2Web数据库安全管理技术 194.2.1防火墙技术 204.2.2身份认证和授权控制 214.2.3监视跟踪和审计 244.2.4存储过程 254.2.5备份与故障恢复 254.3案例分析 26第五章结束语 29参考文献 30鸣谢 32
第一章引言随着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的安全性,从各种途径对其进行了广泛的研究。本课题的研究意义目前Web技术与数据库管理系统(DBMS)相互融合领域的研究已成为热点方向之一,数据库厂家和Web公司也纷纷推出各自的产品及中间件来支持Web技术和DBMS的融合,将两者取长补短,发挥其各自的优势,使用户可以在Web浏览器上方便地检索数据库的内容。但由于Internet本身并没有提供任何安全机制,只要Web站点和Internet连通,就可能被任何人访问。用户已不再受时间、地域的限制,完全可以不按规定的操作流程进行操作,可以直接输入地址访问数据库,或随心所欲地采用标签、超级链接,或频繁使用Back、Fefresh等操作,对后台数据库构成直接威胁。因此,研究基于Web的数据库安全技术对于信息系统的安全保护有着重要的现实意义。本论文的目的、内容及作者的主要贡献在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服务器处于同一地址空间,因此执行效率比较高。Web浏览器Web浏览器数据库CGI/API中间件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的浏览器的无关性。Web浏览器Web浏览器ASPDLL数据库HTML页面ASPHTTPPADOODBC图2ASPWeb数据库连接模型ASPWeb数据库的安全漏洞(1)ACCESS数据库被下载的漏洞通常用户可猜到服务器的数据库的名字和路径,那将是一个非常可怕事情,因为很多网站习惯把用户注册的信息和密码放在数据中,一旦补攻击者下载,会给网站造成不可估量的损失。如下即可下载数据库aa.mdb/aa.mdb(2)引号造成的漏洞很多网站把注册用户名和密码放到数据库中,在登录程序中用以下SQL语句来查询数据库以核对数据。<%dimconn,rsSetconn=Server.CreateObject("ADODB.Connection")conn.Open"Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath("test1.mdb")setrs=server.createobject("adodb.recordset")rs.locktype=3rs.cursortype=0No=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,则有可能进入到该页面。/sunli.asp甚至攻击者可以伪造一些参数挂靠在URL后面形成一个GET类型的HTTP请求,而服务器端正好是使用Querystring环境变量来采集数据或者根本没有指定接受数据的方式,用户伪造的参数即被服务器端验证。通常攻击的这个文件在网站中并没有提供链接,是系统维护员远程操作的入口。/sunli.asp?username=jacky&password=password采用上面介绍的特殊用户名的密码构造方式,就有可能入侵到本来只有系统管理员才可以进入的页面。ASPWeb数据库的安全防护(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),使用应用程序的界面风格在Windows、Mac和XWindows系统中可以保持一致。Java语言编制的Applet程序易于在网上传输,它可以在客户机端运行而不会引起安全问题。Java语言中提供的数据库访问技术称为JDBC,它是JavaSoft公司设计第一个支持Java语言的标准的数据库API。它与微软公司的ODBC(opendatabaseconnectivity)在概念和标准上有相似之处,也是提供对各种关系型数据库的无缝连接。JDBCAPI由SUN公司的JavaSoft子公司开发,是一个标准统一的SQL数据存取接口。它由Java类组成,这些类代表数据连接、SQL语句和结果集等等,它们允许Java应用程序把SQL语句发送到数据库服务器并接受和处理结果集。JDBC机制与WebAPI和专用数据库WebServer有所不同:在客户机上运行的JavaApplet程序可以绕过Web服务器,直接和数据库服务器连接,并直接把结果返回给客户机浏览器,以节省中间层的处理时间。Java/JDBC接口访问数据库。目前绝大多数浏览器都支持Java开发接口程序,对软件配置没有过多的要求,只需要安装JDBS驱动程序就可以了。因此使用Java/JDBC编写数据库接口程序在满足移植性通用性扩展能力等方面具有优势。Web浏览器Web浏览器Web服务器JavaApplet数据库HTTP图3JDBCWeb数据库连接模型以上是几种代表性的Web数据库连接技术。还有一些其它的连接技术,比如,RAD,ObjectWeb,PHP等等,在此不一一列举。
第四章Web数据库安全管理技术与实现4.1Web数据库安全模型Web数据库安全威胁涉及许多方面,个人认为安全措施应综合考虑,具体可以采用下列技术措施:(1)安装防火墙;(2)身份认证和数据完整性认证服务;(3)对机密敏感的数据进行加密存储和传输;(4)访问控制机制;(5)安全审计和监视追踪技术;(6)数据库备份与故障恢复。Web数据库安全模型见图1。防火墙防火墙用户认证服务Web数据库服务器数据加密访问控制审计备份图4Web数据库安全模型基于Web的管理信息系统采用的是3层Client/Server结构,即浏览器/Web服务器/数据库服务器结构。在采用ASP技术与数据库连接的系统中,浏览器和Web服务器采用HTTP协议彼此通信。用户执行基于Web的数据库应用程序,在浏览器端发出对某一数据库文件的请求,Web服务器接收到请求,不是直接通过应用程序访问数据库,而是激活ASP进行各级安全性检测。ASP利用ADO在服务器端创建连接对象,通过ODBC访问后台数据库保存的用户基本信息进行用户鉴定,拒绝非法用户访问请求,对合法用户根据其权限存取数据并返回处理结果。因此,根据基于Web的数据库应用系统的特点,可以采用安装防火墙,用户身份认证和数据完整性认证服务,对机密敏感的数据进行加密存储和传输,访问控制机制,安全审计和监视追踪技术,数据库备份与故障恢复等安全管理结束来构筑管理信息系统的安全体系。4.2Web数据库安全管理技术构筑安全可靠的Web数据库应用系统要从两个方面考虑。首先要对构筑Web数据库的工作环境进行合理系统的安全配置,防止非法人员攻击Web站点。这方面包括操作系统的安全问题、数据库服务器的安全性、Web服务器的安全性以及如何有效的配置防火墙。只有将它们有机的结合起来,才能使Web数据库建立在安全的工作环境中。其次要在编制Web数据库应用程序时,充分考虑安全性和容错性能,以及在不同情况下应付不同行为的能力。这方面包括设置登录Web数据库站点的用户名和口令;为不同级别的用户设定不同的操作权限,访问各自的数据库;一旦受到攻击,能有效地记录是哪个用户什么时候侵入的;在服务器和客户器端建立安全有效的传输通道;在传输过程中对数据进行加密;通过数字签名来验证用户的真实性等。以上几方面不是孤立的,而是相互联系的,所以必须结合起来从多方面多层次考虑才能更好地构筑安全可靠的Web数据库应用系统。4.2.1防火墙技术防火墙(Firewall)技术是一种访问控制技术,它是在内部网络(专用网络)和外部网络(公用网络)之间(如Internet和Intranet之间)设立的一道“防护栏”,即在它们的界面上构造一个保护层(或隔离层),阻止对信息资源的非法访问,并强制所有的连接都必须经过此保护层,从而提供了一个封闭的逻辑环境,保护内部网络免遭非法入侵。防火墙提供的服务主要有:保护那些易受攻击的服务:控制对特殊站点的访问;集中化的安全管理;对网络存取访问进行审计。目前防火墙的主要技术有数据包过滤和代理服务等,这些技术可单独使用,也可结合在一起共同使用。(1)包过滤技术它是基于路由器的技术,包过滤型防火墙位于网络层,它根据在系统内部设置的访问控制表,对通过网络层的IP数据包进行选择和过滤。通过对数据包包头信息中的源IP地址、目的IP地址、源端口号、目的端口号的检查,来确定该数据包是否合法,以决定是否允许它通过。包过滤只能限制一部分浏览器对数据库的访问,一些黑客仍可以利用Spoofing技术,绕国资源路由器,创建带有虚假IP地址的包进入Web站点,对数据库进行侵犯,同时还缺乏审计,跟踪及验证功能。(2)代理技术代理服务技术是基于网络应用层的,作用于应用层。其核心是运行于防火墙主机上的代理服务器进程,它代替网络用户完成特定的TCP/IP功能,一个代理服务器实际上是一个为特定网络应用而连接两个网络的网关,对于每一种不同的应用服务,都必须有一个相应的代理。外部网络和内部网络之间要建立连接,必须通过代理的中间转换,内部网络只接受代理服务提出的服务请求,拒绝外部网络的直接连接。代理技术的优点是它能完全控制通信双方的会话过程,具有用户级的身份验证、日志管理和帐号管理功能,提供了比过滤路由器更为严格的安全性:缺点是缺乏透明性,影响网络,必须针对每一项服务都建立对应的应用层网关,才能提供全面的安全保证,这势必严重限制新应用的引入和挂接。结合上述两种防火墙技术的优缺点,在实际构建防火墙系统时,通常由过滤器提供第一级的安全防护,主要用于防止IP欺骗攻击,再由代理服务器提供更高级的安全防护机制。防火墙技术虽然能提供一些安全保证,但是还不能满足数据库应用系统对安全问题的实际要求,而且完整的数据库安全机制应对不用用户赋予不同的访问权限,建立不同视图,因此应将防火墙技术与其他数据库安全机制结合起来。4.2.2身份认证和授权控制基于Web的数据库应用系统中包含大量的敏感数据和机密数据,为保证系统数据在存储时和网络传输时不被未经授权的用户访问或解读,可以利用用户名来标明用户身份,经系统鉴别用户的合法性后,再利用口令进一步核实用户身份。为保证口令的安全,在口令的提交过程中,可以不采用明文形式。具体方法是:可先对口令、用户名进行加密后再传送,服务器接受以后,对其进行解密。或者利用安全套接字协议(SSL)加密方法,通过使用公共密钥和对称性加密提供非公开通信、身份验证和信息继承。这样既可以简化其复杂性,又可以保证其安全性,使客户和服务器可以在一种防窃听防干扰或防消息伪造的方式下通信。在Web应用程序级,可利用身份认证机制保护被限制的ASP内容。要求每个试图访问被限制的ASP内容的用户必须拥有有效的WindowsNT帐号的用户名和密码,每当用户试图防问被限制的内容时,Web服务器将进行身份验证,以检查用户是否拥有有效的WindowsNT帐号。在后台数据库中,用身份验证机制进一步确认用户的合法性。可建立User用户表,其信息包括登录名、口令、用户名及访问权限代码。访问权限代表了用户能对数据库进行读取、插入、修改操作的权限组合。用户在经过IP地址过滤后,在WebBrowser端呈现用户登录界面。用户在系统提示下输入登录名、口令,并提交输入结果。WebServer在接受到浏览器请求后,激活ASP,通过ADO驱动ODBC与User数据库建立连接,运行ASP处理程序将用户输入与数据库记录进行比较,若为合法用户,则允许其根据权限访问数据库,否则将拒绝访问请求或引导用户注册。由于基于Web的数据库应用程序运行在Internet的环境中,用户完全有机会不在程序员控制之下,通过一些简单操作绕过登录页面,躲避用户名和口令的验证,对数据库安全构成直接威胁。为了防止非法用户进入,保护基于Web的数据库安全性,可以利用Session对象和HTTPheaders信息来实现安全控制。ASP提供了Session内置对象,对每个用户请求激活不同的Session对象,Session变量在整个用户工作期保持不变。因此,可以利用Session变量来保持特定用户信息。当用户通过了用户名和口令的验证后,就把Session对象的SessionID属性作为一个Session变量存储起来。然后,当每次用户试图导航到一种要求有效连接的页面时,就可以比较当前的SessionID与存储在Session对象中的ID。如它们不匹配,就可以采用适当的行动拒绝访问。以此种方法作为身份认证是十分有效的,可以进一步完善ASP的安全机制。在浏览器向WebServer发出请求的同时包含了相当数量的HTTP标题头域信息,如REMOTE_ADDR标明提出请求的主机的Internet地址,HTTP_REFERER表示用户到达当前页经过的链接。因此可以为所有应用程序创建用于IIS管理的统一目录并保存路径信息。各应用程序均以<!--#Includevirtual="myfile.asa"-->方式先执行Myfile.asa,通过判断HTTP_REFERER信息,确定用户的合法性。若用户直接输入URL或通过其它方式绕过用户名、口令验证,则拒绝访问请求。由于Web应用程序的基础是一个个Web页面,整个系统功能体现在每个页面上,所有页面的相互调用完成整个系统功能。但是,由于页面的无记忆性和独立性,使页面的访问实际是通过URL实现,如果程序不对每个页面进行合法性检验证包含文件是一个运行在服务器端的能访问数据库表查,那么非法用户即使不知道用户名和口令,但只要知道某些的URL,也可以跳过身份验证的页面去直接访问后面的和数据处理的相关页面,从而入侵到系统的核心数据库中。针对上述问题,可在Web服务器上建立一个Web用户访问页面的权限表,每一个访问数据库的页面又和具体的数据库表、用户名和口令相对应,如要通过该页面访问某一数据库表或对数据库表实施某种操作,系统要求该数据库表对应的用户名和口令必须和输入的用户名和口令一致,才允许其继续进行。设想若跳过权限验证的页面去直接访问后面的和数据处理的相关页面,由于系统得不到从权限验证页面上来的用户名和口令,系统将拒绝对数据库表的操作。需要强调的是,一、权限验证页面每次重新显现,必须要求重新输入用户名和口令,也就是说,任何一次该页面的重新出现或从其它页面回退到该页面,用户名和口令输入框必须自动清空。二、访问数据库表的页面一旦操作完,该页面的权限验证值就自动作废。这样就保证了要操作数据的唯一通道,使合法用户的数据得以安全保护。如何对网站的数据库进行保护,如何防止访问者看到他们没有访问权限的网页,这都需要一个权限验证系统。当然,可以配置IIS,使用基本验证模式或WindowsNTChallenge/Response验证模式。使用两种中的任一种验证系统,通过改变对文件的权限,可以强制用户在访问一个网页之前输入密码。但是,不论使用基本验证模式或WindowsNTChallenge/Response验证模式,都存在一个问题。这两种验证系统都是与WindowsNT安全体系相分离的。这意味着每当有新用户注册时,都需要手工添加用户,而且不容易从网页中访问和修改密码和用户名。如果只是想通过密码来保护自己的和其他管理员的特殊网页,IIS提供的两种验证系统都是可行的。但是,假如你想在用户提供了自己的权限级别信息后,自动为新用户进行注册,就需要在Web应用系统中自己建立一个验证系统。建立一个权限验证系统。需要两个数据库表和一个文件:权限信息表:用来保存权限信息。验证包含文件:每一个需要权限保护的网页都要包含这个文件。权限信息表包含三个字段。第一个字段保存用户名,第二个字段保存用户密码,第三个字段保存对应权限级别。级别信息表包含两个字段。第一个字段保存权限级别,第二个字段保存该级别对应的页面标识。两表的信息可由数据库管理员进行管理。无论何时,当一个访问者试图访问一个权限保护的网页时,将对这两个表进行查询,如果在表中查到你从权限验证页面上输入的用户名和口令,就可以访问这个保护的页面。验证包含文件是一个运行在服务器端的能访问数据库表的Web文件,被包含在你想进行权限保护的每一个网页页面中。它提供用户输入名字和密码的功能,然后到权限表中查询输入的名字和密码。如果找不到,用户将不能访问该页面。如果找到,则根据对应的级别到级别信息表中查看该级别下是否有该页面的标识,如果没有,用户也不能访问该页面。一般情况下,对于大量的普通查询用户,系统应提供自动注册功能,使其具有查询浏览权限,即自动注册的用户,只能拥有这种最低级别的权限。其它权限级别不应自动注册。当用户注册后,系统会自动将用户名和口令写入权限信息表,同时添入普通用户级别码。4.2.3监视跟踪和审计日志系统具有综合性数据记录功能和自动分类检索能力。完整的日志不仅要包括用户的各项操作,而且还要包括网络中数据接受的正确性、有效性及合法性的检查结果,为日后网络安全分析提供可靠的依据。许多应用程序的日志记录只用于时候监督,其实对日志的分析还可用与预防入侵,提高网络安全。在数据库应用胸中,日志将记录自用户登录开始起,直到退出系统为止,在这段时间中所执行的所有操作包括登录失败操作、对数据库的操作及系统功能的使用等。因此,必须建立完善的日志记录功能。另外,还可利用现有的网络监视软件进行日志记录和信息跟踪。例如,用日志监视跟踪可进行潜在“黑客”攻击检查、单帐号多用户检查和非工作时间操作检查等。为了解决用户躲避用户名和口令的验证,可采用对页面用户基本信息的跟踪监视,即采用ASP技术中的QueryString和Form的Hidden类型保存用户基本信息。在每个应用程序执行前先跟踪监视用户信息是否存在,若用户直接以URL地址访问数据库则会因RequeryString.QueryString或Request.Form的值为空被拒绝。此方法可更进一步提高系统的安全性。审计主要是确保可查性。审计作为一项安全技术,对信息系统的安全有着很重要的作用。通过设置完善的审计机制,能及时提供与系统运行过程中的各种可疑现象有关的信息,供有关人员能及时发现隐患。审计功能可以记录主体访问客体的轨迹。记录的内容包括:站点使用情况、服务器工作情况、链接状态、页面使用情况、用户情况、访问时间、用户、操作类型及是否成功等。为提高审计功能,必要时还需设置审计安全时间发生积累机制。当超过一定阈值时,能立刻发出报警,以提示应采取措施。采用审计功能,可以知道用户正在使用的系统权限、使用的频率、正在登录的用户数、会话平均持续时间、在特殊表上使用的命令以及很多其他有关事实。4.2.4存储过程在基于Web的数据库应用系统中,可建立一个存储过程,在使用时通过内嵌的SQL命令来执行。在存储过程中,采用将用户和数据分开的方法。这种方法不允许任何对表的完全访问和更新,只是提供实现与表交互的存储过程。用户把参数提供给插入存储过程。插入存储过程即为它们执行插入操作。用户提供检索的条件,检索存储过程返回找到的数据行。这个办法的好处在于它完全控制了信息的存储和检索,任何不想让用户访问的列都可以被忽略,任何插入之前所需要做的附加处理都可以做到。这对于数据存储和检索来说,是一个带有更多地面向对象风格的方法,它有助于保证数据的正确与安全。4.2.5备份与故障恢复即使采取了很多安全措施,也难保数据库的万无一失。因安全是相对的,不安全才是绝对的。为了在数据库攻破后,能尽快恢复系统并找出入侵者,我们还必须做好系统数据备份。备份与故障恢复是实现信息系统安全运行的重要技术之一,是确保信息系统因各种不测时间受到破坏时,能尽快投入再使用的重要保证。按照信息系统所受到的破坏程度,需要采取不同的恢复措施,对备份的要求也有所不同。为了对付灾难性的破坏,可以设置主机系统的远地系统备份,以备主机系统不能正常运行时启用。当系统受到非灾难性的破坏时,主机系统可通过专用备份设备,进行全系统备份、部分系统备份和增量信息备份,以确保系统停机后经过尝新启动即可正常运行,而且不会造成有用信息的丢失。当前,计算机软、硬件系统的可靠性有了很大的改善,而且还可以采用磁盘阵列等设备来提高系统的容错能力,这更进一步提高了系统的可靠性。然而这些措施不可能是完美的,也无法保证系统的安全做到万无一失,它们只能在一定程度上减少存储介质故障而带来的损失。而且对于操作人员的意外操作或蓄意的破坏性操作、破坏性病毒的攻击、自然灾害等原因所引起的系统故障,以上措施还无能为力。定期进行数据备份是保证系统安全的一项重要措施。在意外的情况发生时,可以依靠备份数据来恢复数据库。目前,最快的然而是最昂贵的保护是准备一个备份服务器随时替代主服务器,备份服务器必须能支持MicrosoftSQLServer运行,并能完整备份所有数据库、系统和用户帐户,因为事务处理日志和数据库的转储由主服务器创建,所以它们必须迅速地装载到备份服务器上,如果主服务器需要中止工作一段时间,只需投入备份服务器替代主服务器即可,备份服务器将接管事务处理日志,就好象什么事情也没发生过。这就是服务器镜像备份,也称为双机热备份。因基于成本或其他原因考虑,尤其是双机热备份(专门使用一个与服务器配置一样的计算机为备份服务器)采用者较少,因此采用异机备份的策略,是最好最经济的备份方式,特别是当服务器崩溃或MicrosoftSQLServer系统崩溃时,此时除了双机热备份可以启用备份服务器直接使用外,通过其他的各种备份策略(不包括异机备份策略)必须重装服务器操作系统(MicrosoftWindowsNT)或重装MicrosoftSQLServer。采用异机备份策略,则不必担心,这时只需待装好MicrosoftSQLServer后,从异机传送数据恢复即可。具体的做法为:在局域网内的任何一台工作站计算机上安装MicrosoftWindowsNT及MicrosoftSQLServer,并在该机上建立一个与服务器中的数据库同名的数据库,利用MicrosoftSQLServer系统本身提供的异机传送工具(在MicrosoftSQLEnterpriseManager中的Tools菜单下的Database/ObjectTransfer),通过设置定时(可以是每月、每周、每日或每时),由计算机自动把服务器中的数据库的数据传送到该工作站机的数据库中,这样一旦服务器(操作系统)崩溃或MicrosoftSQLServer系统崩溃时,只要重装服务器操作系统(MicrosoftWindowsNT)或重装MicrosoftSQLServer,仍然可以采用异机传送工具来通过该工作站把数据传回至服务器的MicrosoftSQLServer数据库中,以确保数据的安全恢复。4.3案例分析我们知道,SQL是一种结构化查询语言,功能相当强大,基于Web脚本语言+后台书系统的动态网站多通过SQL语言来查询数据库和更新数据库。我们在浏览这些网页时通常要提交一些信息,比如用户登录名、密码,信息条目的ID等,服务器应用程序就会对浏览器提交的数据进行处理,然后返回相应的信息给浏览器。我们这里举一个验证登录的例子来说明SQL注入的原理。假设某网站的数据库中有一个login表用来存放用户的登录信息,包含username、password等字段,网站的应用程序根据用户提交的数据生成SQL查询语句,如果查询返回的记录>1,那么用户就通过验证,反之登录失败。设用户提交的用户名为:abc,密码为:“123”,则生成SQL语句:select*formloginwhereusername=‘abc’andpassword=‘123’。如果login表中存在username为“abc”而密码为“123”的用户,那么就登录成功,这是正常的情况。但是,如果用户提交的用户名为:“abc’or‘’=‘”,密码为:“123’or‘’=‘”时又怎么样呢?此时生成的SQL语句为:select*fromloginwhereusername=‘abc’or‘’=‘’andpassword=‘123’or‘’=‘’。此时不管login表中是否存在username为“abc”密码为“123”的用户,只要login表中有记录,都将登录成功,因为‘’==‘’(空字符=空字符)恒成立。我们发现数据库服务器并不是将我们提交的用户名仅仅当作用户名来处理,而是将之分成两段,取“abc’”当成用户名,构成逻辑关系式username=‘abc’,并将余下部分“or‘’=‘’”与之共同组成逻辑或关系式:username=‘abc’or‘’=‘’,显然,此关系式恒为真;同样,对我们提交的密码也是如此处理。也就是说,上述SQL语句的where子句被分析为:where[(username=‘abc’)or(‘’=‘’)]and[(password=‘123’)or(‘’=‘’)]。对于任何记录,此逻辑关
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- kV输电线路带电更换直线串任意单片绝缘子
- CSS样式表模板表单的应用
- GPS卫星的导航电文和卫星信号
- E字背景淡绿色系列模板
- 公司新员工年度工作总结
- 2026四上数学易错题互动课件
- 2026年结构工程师《结构抗震设计》试卷
- 幼儿健康活动教案刷牙
- 出货检验规范判定标准细则
- 设备润滑保养作业规范
- 厂区生活垃圾管理制度
- 直播公司入股协议书范本
- 励耕计划 申请书
- DB11-T 1771-2020 地源热泵系统运行技术规范
- T-CSAE 186-2021 电动汽车动力蓄电池箱火灾用气体防控装置
- 游戏开发外包合同
- 呼吸机雾化吸入疗法护理实践专家共识
- DL-T5841-2021电气装置安装工程母线装置施工及验收规范
- 车辆维修保养服务 投标方案(技术方案)
- 西藏湘河水利枢纽及配套灌区工程水土保持方案
- 穴位埋线疗法对多囊卵巢综合征的治疗效果观察
评论
0/150
提交评论