摘 要:Web数据库的应用越来越广,对数据库访问成为关键性技术。而Web数据
库的安全问题也日益突出。本文介绍了几种流行的Web数据库访问技术,同时针对Web数据库的安全问题,给出了一个Web数据库安全的初步模型。
关键 词:Web数据库 数据库访问 数据安全 ASP JDBC 通用网关接口。
World Wide Web(www)是当今Internet上最主要的信息服务,静态Web站点中各
种形式的数据以文件方式存在,当信息量以几何级数增加时信息的发布和维护就显得极为困难;而另一方面,用户对信息的实时性、交互性的要求随着信息技术的发展已变得理所应当。同时,数据库技术经过几十年的发展日益成熟起来,Oracle、DB2、Informix、 Sybase、MSSQL Server 等数据库系统的功能日趋强大。Web技术与数据库技术的结合能够综合二者的优点、发挥二者的潜力,充分利用已有的数据库信息资源。
基于Web的数据库访问技术是指:在客户端,安装Web浏览器,作为用户输入查询条件
和显示查询结果的交互界面。用户可以通过填写表格或输入关键字的方式来与WWW进行交互,当用户单击表格上的按钮时,表格中的数据便发送到Web服务器。Web服务器介于Web浏览器与数据库服务器之间,负责用户输入信息的接收。服务器将数据传送至要被处理的脚本或应用程序,并在数据库中查询数据或将数据投递到数据库中。最后,服务器将返回结果插入到HTML页面,传送至客户端以响应用户。这种交互性提高了用户参与的积极性。
一. WEB数据库的概念
采用Web方式实现数据库的应用,首先要了解有关Web数据的技术,知道实现Web
数据库的一般方法和手段。
一、层次结构
在开发一个应用系统时,首先要了解所开发系统的层次结构,是单层、双层还是多层结
构,因为只有明确层次结构之后,才能确定开发策略和路线。目前的应用系统一般分为3种结构,即单层结构、客户/服务器结构和瘦客户机(Thin Clients)结构。
1.单层结构
所谓单层结构是指单机版软件,如前面所开发的学生选课系统,就是典型的单层结构,
通过项目生成器将项目中所有部件集成、连编之后,再通过发布就可以将该产品交付给用户。这类软件,结构简单,适合单机操作。其缺点是不能实现数据共享,多人操作。
2.客户/服务器结构
客户/服务器结构是双层结构,其结构如图8.27所示。 图8.27 客户/服务器结构
从图中可以看出,这种结构的数据库是放置在服务器端,客户操作数据库时,是通过连
接器向后台数据库进行访问。
(1)客户机
在客户机端,必须安装所有的客户端操作程序,客户访问数据库通过连接器,然后连接
到服务器上的数据库。客户机端主要做一些界面操作。
(2)连接器
连接器包括硬件和软件。硬件是指网卡和相应的驱动程序,首先要显示客户机和服务器
之间的通信连接。软件是数据访问程序,如ODBC,ADO等,需要这些标准的数据驱动程序来访问后台数据库。
(3)服务器
服务器是专门用来管理和运行数据库的计算机。该机器的容量和处理能力要求能满足客
户访问的应用。客户/服务器结构的最大好处是将前台和后台隔离开来,这样提供了更好的灵活性,如后台数据库可以是Oracle、SQL Server、Visual FoxPro等数据库,而前台可
以采用当前数据库的开发工具,也可以使用其他通用开发工具,如PB,VB,VC等等,这种方式增强了平台的性和互操作性,仅要求在客户/服务器之间使用标准的通信和数据格式即可。其次这种方式将工作负荷进行分担。但是,这种方式的局限性是不易伸缩,如果服务器由于客户的流量超负荷,就需要升级服务器硬件,使用具有更大的内存和CPU处理能力。其次,这种方式对用户的要求比较高,需要进行培训,用户友好性差,这是所谓的胖客户机(Thick Clients)方式。
3.三层结构
在Internet/Intranet快速发展的今天,人们提出了多级客户/服务器方式,即所谓三层
结构方式,如图8.28所示。
图8.28 三层结构
从图中可以看出,三层结构实际上是将传统客户/服务器结构进行扩展,将原来的连接
器部分进行扩展,使用域名(DSN)服务器和Web服务器构成中间层。这样就极大地扩展了系统可伸缩性。数据库服务器可以放置在不同的物理位置、不同的计算机上。Web服务器也可以放置在不同物理位置和不同的计算机上,客户可以通过域名服务器找到任何位置上的任何数据库。
这种对传统客户/服务器结构进行简单扩展,从而彻底改变传统软件的编程模式和系统
设计模式。客户是通过网页来访问数据库的,因此,客户机上只要有一个浏览器就可以了,不再需要在客户机上复制客户程序,原来的客户程序都被放置在Web服务器上,可同时供任何一个客户下载使用。这样,客户机就变成了瘦客户机(Thin Clients)。这样结构的最大受益者是客户,客户不再需要进行相关培训,只要会使用浏览器就可以操作世界上任何数据库应用系统。例如,查阅美国国家图书馆的资料,只要知道网址(URL,统一定位器)即可。因此,现在数据库应用开发已经全面转向三层结构模式的开发,从而也为数据库应用工
作者提出了新的要求。
二、在IIS中创建虚拟目录
基于三层结构模式的开发方法,首先就是要选择Web平台,根据不同的操作系统,可
以选择不同的Web服务器平台。即使在同一操作系统平台下也可以选择不同的Web服务器,在Windows NT和Windows 2000平台下,最常用的Web服务器可以选择IIS(Internet Information Server,Internet信息服务器)。关于IIS的细节可以参考其他参考书,下面简要介绍在Windows 2000下使用IIS的方法。为了实现Web数据库,首先在IIS中创建虚拟目录。操作方法如下:
1.选择“开始”菜单,“程序”菜单中的“管理工具”,然后选择“Internet服务管理
器”,打开“Internet信息服务”设置窗口。
2.在“Internet信息服务”窗口左边的“树”中选择“默认Web站点”,单击鼠标右
键,打开弹出式菜单,选择“新建”菜单项下的“虚拟目录”,如图8.29所示。
图8.29 创建虚拟目录
弹出“虚拟目录创建向导”,单击“下一步”按钮,进入虚拟目录设置: (1)设置虚拟目录别名:别名用于通过浏览器访问时URL的一部分。
(2)设置Web站点内容目录:该目录包含要发布到Web站点的内容,其中包括下面
将要介绍的文件。通过“浏览”按钮可以定位到一个目录。
(3)设置访问权限:允许的访问权限有读取、运行脚本、执行、写入和浏览等五项。
要选中“执行”,如果该目录中放置了HTML文件,还必须选中“读取”。
(4)最后点击“完成”按钮结束设置。 三、Web数据库访问方法
Web数据库访问的方法基本上分为三类,基于ODBC方法、基于JDBC方法和专用方
法。
1.基于ODBC方法
基于ODBC方法是一种通用标准方法,也是实现异种数据库互连的方法。基于ODBC
方法中可细分为IDC、ADC和ADO方法
(1)IDC方法
IDC(Internet Database Connector,Internet数据库连接器)方法是一种比较简单
的方法,稍后将专门讨论该方法。
(2)ADC方法
ADC(Advanced Data Connector,高级数据库连接器)方法是一种基于高级连接的
方法,这种高级连接是通过使用RDS(Remote Data Source,远程数据源)对象来访问远程数据库。
(3)ADO方法
ADO(ActiveX Data Object,活动数据对象)是Microsoft Intrenet Information
Server的一部分,也是Visual C++ 5.0,Visual InterDev,Visual Basic的一部分。当前最新的和最重要的发展是OLE DB,它提供对异构数据存储的访问。ActiveX Data Object是为访问OLE DB提供的编程接口模型。ADO对象模型由6个主要对象即连接、错误处理、命令、参数、记录集和字段对象组成,可以在诸如VBScript中直接使用。
2.基于JDBC方法
随着Java技术与数据库技术的日趋成熟,基于JDBC(Java数据库开放接口)技术,
使得应用程序能够很方便地进行数据库连接。这种方法是:客户机首先访问Web服务器,下载Java字节码文件,并将Applet相关类的字节码文件和JDBC接口字节码文件下载到客户端,然后与Web服务器脱离,接着Applet根据数据库地址、端口号和帐号与数据库
连接进行交互,因此用户与数据库服务器的交互是由浏览器直接完成的。由于JDBC技术的可操作性、可维护性和安全性及其事务处理能力,使用效率都比较高,因此具有很大的优势。
3.专用方法
访问远程数据库的第3种方法是专用方法,每种数据库,一般来说都具有专用Web数
据库访问方法,这种方法具有专用性,自然效率很高,如果说使用ODBC方法是秒级响应速度,专用方法则为哑秒级响应速度,例如Visual FoxPro 6中提供的数据库服务器功能就是用一种专用方法访问Visual Fox Pro 6数据库的方法。
二. Web数据库访问技术
数据库引擎是Web数据库站点最重要的组成部分之一。当我们评价一个Web数据库
引擎的时候,首先应考虑多用户问题,也就是说,数据库必须能够支持多个并发用户的访问。另外,所建立的Web数据库应是关系型的。关系数据库是一种功能完善、运行可靠的数据库系统,目前大多数的商业应用都主要依赖于这种系统,如SQL Server、Sybase和Oracle等。在另一方面,关系数据库支持的是一个相当标准的特性集。所有产品都以一个非常容易理解的标准语言为基础,即SQL/92语言规范。所以在Web数据库系统中,采用何种RBMS(关系型数据库管理系统)都没有什么关系,因为它们都遵守同一个标准。从技术发展的角度来看,以前通过浏览器访问数据库的惟一渠道是CGI方式。随后出现了ISAPI、NSAPI和JDBC等技术方案,近来又流行ASP技术。下面我们对这些技术逐一进行分析。
一、CGI技术
CGI(Common Gateway Interface)是外部应用程序与Web服务器交互的一个标准接
口。CGI应用程序可以完成客户端与服务器的交互操作。它打破了服务器软件的局限性,允许用户根据需要采用各种语言去实现无法用HTTP、HTML实现的功能,给WWW提供了更为广阔的应用空间。例如,一个能够访问外部数据库的CGI程序可以使客户端用户通过Web
服务器进行数据库的查询。同时,CGI也为在不同的平台之间进行沟通提供了范例。遵循CGI标准编写的服务器端的可执行程序称为CGI程序。CGI最大的用处之一在于其与浏览Web站点的用户之间的交互能力,使信息网关、反馈机制、访问数据库、订阅和查询等一系列灵活复杂的操作得以实现。通过这个公共网关界面,服务器可以向CGI程序发送信息,CGI程序也可以向服务器回送信息。使用CGI实现Web与数据库的互连,最大的优点在于其通用性。目前几乎所有的HTTP服务器都支持CGI。CGI程序与服务器、客户机的关系及遵守的协议和标准可用图1来说明。图1 CGI程序民服务器、客户机的关系首先,客户端根据某资源的URL向Web Server提出请求,Web Server的HTTP Daemon(守护进程)将此请求的参数通过标准输入stdin和环境变量(Environment Variable)传递给指定的CGI程序,并启动此应用程序进行处理。处理结果通过标准输出stdout返回给HTTPDaemon进程,再由HTTP Daemon进程返回给客户端,由浏览器负责解释执行,将最终结果显示在用户面前。CGI程序的执行一般有两种调用方式:一是通过URL直接调用,在浏览器的URL栏里直接写入上述地址就可以调用该程序;另一种方式,也是主要的方式,是通过交互式主页中的FORM栏调用,通常都是用户在填完一张输入信息主页后按\"确认\"按钮启动CGI程序。主页的交互一般都是这样调用CGI来完成的。
从编程语言的角度讲,CGI只是一个普通的程序,只不过其输入、输出的处理比较特
殊,只要能达到交互的目的,CGI程序可以使用Perl、C、C++,FORTRAN和数据库语言等任何能够形成可执行程序的语言编写。WinCGI是由标准CGI演变而来的。WinCGI允许作为应用程序运行的服务器使用Windows应用程序的服务,包括Visual Basic程序。使用这个界面,一个以WinCGI为基础的程序是从磁盘文件中读取信息而不是从环境变量或标准输入中读取,并且把得出的最后数据写到文件中而不是写到标准输出中。CGI的跨平台性能极佳,几乎可以在任何操作系统上实现,如DOS、Windows、Unix、OS/2、Macintosh等。CGI
的缺点也是显而易见的: CGI的应用程序一般都是一个的可执行程序,与Web服务器各自占据着不同的进程,而且一般一个CGI程序只处理一个用户请求。每当有一个用户请求,就会激活一个CGI进程。当用户请求数量非常多时,大量的CGI程序就会大量挤占系统的资源,如内存、CPU时间等,造成CGI运行效率低下。另外CGI的功能有限、开发较为复杂,且不具备事务处理(Transaction)功能,这在一定程度上了它的应用。
二、ISAPI
数据库程序的一个关键组件是数据库API(Application Program Interface)。每个
数据库引擎都带有一系列库(如Windows NT下使用的动态链接库)。只有通过这种库,应用程序才能连接和使用数据库引擎。对于特定的数据库产品,应用程序对动态链接库的调用是专用的。根据定义,每种数据库系统都有属于自己的专有调用接口,例如对SQL Server设计的API程序,就不能用它访问Oracle或Informix数据库。
Web服务器的供应商为了扩展服务器的性能,各自开发了API应用程序接口来取代
CGI。目前最流行的两种API是Microsoft的ISAPI和Netscape的NSAPI,这两种接口允许我们以标准方式编写Web服务器交互的应用程序。其中对数据库访问的功能主要是以IDC文件形式提供给客户的,在IDC文件中定义了数据源、返回的模板以及动态的SQL语句。
ISAPI是Microsoft提供的一套面向Internet服务的API接口,用它编制的程序以动态
链接库(DLL)的形式存在,可实现CGI程序所能提供的全部功能。ISAPI的工作原理和CGI大体上是相同的,都是通过交互式主页取得用户输入信息,然后交服务器后台处理。但是二者在实现机制上大相径庭。ISAPI与CGI最大的区别在于:在ISAPI下建立的应用程序都是以动态链接库的形式存在的;而CGI的应用程序一般都是可执行程序。在ISAPI调用方式中,被用户激活的DLL和WWW服务处于同一进程中,在处理完某个用户的请求后不会马上消失,而
是和WWW服务器一起继续驻留在内存中,等待处理其他用户的HTTP请求,直到过了指定时间后一直没有用户输入为止。基于ISAPI的所有进程都可以获得HTTP Server上的任何资源, 而且当它调用外部CGI Script时,需要的开销也较单纯的CGI少。因此ISAPI的运行效率要显著高于CGI程序。ISAPI的工作过程如图2所示。图2 通过ISAPI接口访问 Web数据库
由于开发ISAPI应用要用到Microsoft的一套API,所以能用来开发ISAPI应用的语言
不如CGI多,主要有Visual C++ 4.1以上版本,也可以使用Visual Basic 5.0、Borland C++ 5.0等。ISAPI可以用来写Web服务器(如IIS)的OLE服务器扩展和过滤器,例如Visual C++ 5.0 MFC提供了5个类(CHttpServer、CHttpServerContext、CHtmlStream、CHttpFiler、CHtt pServerFilter)用来写ISAPI应用。
三、ODBC
API方法与Web服务器结合紧密,所以性能较高。但是利用底层的API开发数据库访问
程序仍然很困难,因此一般使用基于底层API的高层数据库编程接口,这就是我们所说的ODBC。ODBC是\"开放数据库互连\"的简称,是一种使用SQL的应用程序接口(API)。ODBC一个最显著的优点是用它生成的程序与数据库或数据库引擎是无关的。ODBC可使程序员方便地编写访问各DBMS厂商的数据库的应用程序,而不需了解其产品的细节。Web服务器通过数据库驱动程序ODBC向数据库服务器发出SQL请求,数据库服务器接到的是标准的SQL查询语句,数据管理系统执行SQL查询并将查询结果再通过ODBC传回Web服务器。许多服务器扩展程序使用包含ODBC层的系统结构。ODBC是为调用关系数据库提供统一途径的一类API,由于它适用于许多不同的数据库产品,因此是服务器扩展程序开发者们理所当然的选择。
Microsoft Developer Studio为大多数标准的数据库格式提供了32位ODBC驱
动器。这些标准数据格式包括有SQL Server、Access、Paradox、dBase、FoxPro、Excel、Oracle以及Microsoft Text。如果用户希望使用其他数据格式,则需要安装相应的ODBC驱动器及DBMS。用户使用自己的DBMS数据库管理功能生成新的数据库模式后,就可以使用ODBC来登录数据源。对用户的应用程序来说,只要安装有驱动程序,就能注册很多不同的数据库。
四、JDBC
Java语言显示出优于以往编程语言的诸多特色,赢得了众多数据库厂商的支持。为
了同时连接到多个数据库进行并行的联合查询,可以充分利用Java语言本身的特色。由于Java是一种面向对象的、多线程的网络编程语言,因此能够用多个线程对应多个不同的数据库进行查询操作。用户发出的同一条查询语句同时启动多个线程,并行运行,同时进行异构数据库的联合查询。
在数据库处理方面,Java提供了JDBC(Java数据库连接:Java Database
Connectivity),为数据库开发应用提供了标准的应用程序编程接口。与ODBC类似,JDBC也是一种特殊的API,是用于执行SQL语句的Java应用程序接口(Java API),它规定了Java如何与数据库进行交互作用。JDBC由一组用Java语言写的类和接口组成,利用Java机制设计的标准SQL数据库连接接口JDBC去访问数据库。JDBC也是一种规范,其宗旨是让各数据库开发商为Java程序员提供标准的数据库访问类和接口。JDBC与Java结合,使用户很容易地把SQL语句传送到任何关系数据库中,程序员用它编写的数据库应用软件,可在各种数据
库系统上运行。采用JDBC可以很容易用SQL语句访问任何商用数据库(或称异构数据库),如SQL Server、Sybase或Oracle。采用Java和JDBC编写的数据库应用程序具有与平台无关的特性,很容易用SQL语句访问任何商用数据库,而不必为每一种数据库平台编写不同的程序。
JDBC访问数据库的过程是:首先用户的浏览器连接到Web服务器上,下载含有
Java小程序的HTML页,Java小程序在客户端运行,使用JDBC接口,绕过Web服务器,直接与数据库服务器交互,并直接把查询结果的HTML页返回到浏览器。
与ODBC一样,JDBC提供给程序员的编程接口由两部分组成,即面向应用的编程接
口JDBC API和供底层开发的驱动程序接口JDBC Driver API。JDBC API是为应用程序员提供的,是一系列抽象的接口,它使得应用程序员能够进行数据库连接,执行SQL查询,并且得到返回结果。而JDBC Driver API则是为数据库厂商提供的编程接口。
基于Java的JDBC发展迅速。Sun承诺任何Java Applet或者Java应用软件都能够与
数据库结合。由于JDBC利用了Java的跨平台特色,因此,它成为Intranet和Internet环境下访问异构数据库的一种较优方式。
五、ASP技术
ASP(Active Server Pages)是由Microsoft开发的一项新技术。ASP是一个基于
Web服务器端的开发环境,利用它可以产生和运行动态的、交互的、高性能的Web服务应用程序。与常见的在Client端实现动态主页的技术如Java applet、ActiveX Control、VB Script、JavaScript等不同,ASP中的命令和Script语句都是由服务器来解释执行的,执行结
果产生动态生成的Web页面并送到浏览器;而Client端技术的Script命令则是由浏览器来解释执行的。由于ASP在服务器端解释执行,开发者可以不必考虑浏览器是否支持ASP;同时由于它在服务器端执行,开发者也不必担心别人下载程序以窃取编程逻辑,从而保护了开发者的利益。
ASP具有如下特点:
1. 编程简单。ASP使用Script(描述性的语言),只使用简单的语法和数学表达式,而
且不需要编译。可嵌入到HTML文件中。ASP不需要别的设计环境,ASP文件的制作和HTML类似,且和HTML开发集成,可以在同一个过程完成。支持广泛。ASP除支持VB Script、JavaScript外,还能以插件形式支持第三方语言,如PERL、TCL等。ASP通过后缀名为.asp的ASP文件来实现,一个ASP文件相当于一个可执行文件,因此必须放在Web服务器上有可执行权限的目录下。当浏览器向Web Server请求调用ASP文件时,就启动了ASP。Web Server开始调用ASP,将被请求的.asp文件从头读到底,执行每一个命令,然后动态生成一个HTML页面并送到浏览器。通过ASP内置的对象、服务器组件(ServerComponent)可以完成非常复杂的任务,而且用户还可以自己开发或利用别人开发的服务器组件完成专门的任务。目前ASP只适用于IIS 3.0 on Windows NT、Microsoft Peer Web Server v3.0 onNT Workstation、Microsoft Personal Web Server on Win95这些Web Server。
六、方案比较与结论
CGI根据浏览器端的http请求激活相应进程,每一个请求对应一个进程。当同时有很多
请求时,程序挤占系统资源,造成效率低下。ISAPI针对这一缺点进行改进,利用DLL(动态链接库)技术,以线程代替进程,提高了性能和速度,但要考虑线程的同步问题,而且开发步骤烦琐。
这两种技术还存在另外一个问题,那就是开发困难。程序的开发和HTML写作是两个完全不同的过程,需要专门的程序员开发。而另一些较简单的开发技术如JavaScript和IDC(Internet Database Connector)等功能有限。
三.Web数据库的安全性
随着Web数据库的应用越来越广泛,Web数据库的安全问题日益突出,如何才能保
证和加强数据库的安全性已成为目前必须要解决的问题。
一.数据库系统安全控制模式
Web数据库是数据库技术与Web技术的结合,其中存在诸多安全隐患,如通过网络
传输的用户名和密码很容易被人窃取。用户读取的数据可能被截取、篡改等。如何保障Web数据库的安全运行呢?
1.建立安全模型
通常,安全措施是计算机系统中用户使用数据库应用程序一直到访问后台数据库要经过
的安全认证过程。当用户访问数据库时首先通过数据库应用程序进入到数据库系统,这时数据库应用程序将用户提交的用户名与口令(口令密文)交给数据库管理系统进行认证,在确定其身份合法后,才能进入下一步的操作。当要对数据库中的对象(表、视图、触发器、存储过程等)进行操作时,也必须通过数据库访问的身份认证,只有通过了数据库的身份认证才能对数据库对象进行实际的操作。通过身份认证的用户,只是拥有了进入应用系统和数据库的“凭证”,但用户在应用系统和数据库中可以进行什么样的操作,就要依靠“访问控制”和“存取控制”的权限分配和约束。其中“访问控制”与应用系统相关,决定当前用户可以对应用系统中哪些模块、模块中的哪些工作流程进行管理;“存取控制”与数据库相关联,决定当前用户可以对数据库中的哪些对象进行操作,以及可以进行何种操作。虽然“访问控制”和“存取控制”可以将用户的应用系统访问范围最小化,数据对象操作权限最低化,但
是就数据库本身而言,利用这种视图、触发器、存储过程等方法来保护数据和对一些敏感数据的“加密存储”也是数据库管理系统提供的安全策略。
2.审计追踪和数据备份
目前还没有任何一种可行的方法来彻底解决合法用户在通过身份认证后滥用特权的问
题,但审计追踪仍是保证数据库安全不可缺的一道重要防线。审计是一种监视措施,跟踪记录有关数据的访问活动。审计追踪把用户对数据库的所有操作自动记录下来,存放在审计日志中(Audit Log)。记录的内容一般包括:操作类型(如修改、查询、删除),操作终端标识与操作者标识,操作日期和时间,操作所涉及到相关数据(如基本表、视图、记录、属性等),数据库的前象和后象等。利用这些信息,可以进一步找出非法存取数据的库人、时间和内容等。
3.数据库管理系统
数据库管理系统往往都将其作为可选特征,允许相应的操作语句可灵活的打开或关闭审
计功能。数据库备份恢复策略计算机同其他设备一样,都可能发生故障。计算机故障的原因多种多样,包括磁盘故障、电源故障、软件故障、灾害故障以及人为破坏等。一旦发生这种情况,就可能造成数据库的丢失。因此数据库系统必须采取必要的措施,以保证发生故障时,可以恢复数据库。数据库系统管理系统的备份和恢复机制就是保证在数据库系统出故障时,能够将数据库系统还原到正常状态。
4. 数据备份
数据备份(建立冗余数据)是指定期或不定期地对数据库进行复制。可以将数据复制到本
地机制上,也可以复制到其他机器上。恢复方法通常是可以利用利用备份技术、事务日志技术、镜像技术完成。视图机制和数据加密为不同的用户定义不同的视图,可以各个用户的访问范围。通过视图机制把要保护的数据对无权存取这些数据的用户隐藏起来,从而自动
地对数据库提供一定程度的安全保护。但是视图机制的安全性保护不太精细,往往不能达到应用系统的要求,其主要功能在于提供了数据库的逻辑性。在实际应用中,通常将视图机制与授权机制结合起来使用,首先用视图机制屏蔽一部分保密数据,然后在视图机制上进一步定义存取权限。
5.数据加密
数据加密(Data Encryption)是防止数据库中数据存储和传输中失密的有效手段。加密
的基本思想是根据一定的算法将原始数据(明文plaintext)加密成为不可直接识别的格式(密文,ciphertext),数据以密文的方式存储和传播。Web数据库的安全威胁涉及许多方面,是一个全局性的问题,而且黑客的攻击手段和方法不断翻新,因此要根据企业的实际需求综合考虑各种技术,构建一个有机的结合体。同时也要清醒地认识到一个很好的安全解决方案不仅是纯粹的技术问题,而且还需要法律、管理、社会因素的配合。
二.常见Web数据库安全技术 1.用户标识和鉴别:
用户标识与鉴定的方法有多种,为了获得更强的安全性,通常是多种方法并用。系统通
过核对口令来判别用户的真伪。这种方法简单易行,但是也是一个不安全的方法,不能抵御口令的猜测攻击;另外,攻击者可能窃听通信信道或进行网络窥探(sniffer),口令的明文传输使得攻击者只要能在口令传输过程中获得口令,系统就会被攻破。口令以明文形式在通信信道上传输容易被窃取,因此人们通常采用更复杂的方法--口令加密,口令以密文形式在通信信道上传输。
2.智能卡技术:
智能卡由微处理器、存储器、输入输出设备组成,其中微处理器可计算该卡的一个序列
号(ID)和其他数据的加密形式,ID保证智能卡的真实性,持卡人就能访问系统。在使用智能
卡时,为了安全起见,许多系统要卡和身份识别码(PIN)同时使用,二者缺一不可。使用智能卡进行身份认证的优点:智能卡提供的是硬件保护措施和加密算法,较传统的口令鉴别方法更好,安全性能增加;缺点:携带不方便且开户费用较高。
3.主体特征鉴别:
主体认证技术以人体唯一的、可靠的、稳定的生物特征(如指纹、虹膜、脸部、掌纹等)
为依据,采用计算机的强大网络功能和网络技术进行图像处理和模式识别。主体特征鉴别技术优点:安全性、可靠性和有效性与传的身份认证手段相比产生了质的飞跃,适合安全级别较高的场所;缺点:生物特征信息采集、认证装备的成本较高,人身特征识别软件识别率有待提高。
四.保证Web数据库安全性
Web数据库是基于Internet/Intranet的应用系统,由于互连网开放性和通信协议的安
全缺陷,以及在网络环境中数据存储和对其访问与处理的分布性特点,网上传输的数据容易受到破坏、窃取、篡改、转移和丢失。这些危害通常是对网络的攻击引起的。到现在,针对Web数据库的应用级入侵已经变得越来越猖獗,如SQL注入、跨站点脚本攻击和未经授权的用户访问等。所有这些入侵都有可能绕过前台安全系统并对数据库系统攻击。如何保证Web数据库的安全性已成为新的课题。
第一关、对用户安全管理
Web数据库是个极为复杂的系统,因此很难进行正确的配置和安全维护,当然,必须
首先要保证的就是数据库用户的权限的安全性。当用户通过Web方式要对数据库中的对象(表、视图、触发器、存储过程等)进行操作时,必须通过数据库访问的身份认证。多数数据库系统还有众所周知的默认账号和密码,可支持对数据库资源的各级访问。因此,很多重要的数据库系统很可能受到威协。用户存取权限是指不同的用户对于不同的数据对象有不同的
操作权限。存取权限由两个要素组成:数据对象和操作类型。定义一个用户的存取权限就是要定义这个用户可以在哪些数据对象上进行哪些类型的操作。权限分系统权限和对象权限两种。系统权限由DBA授予某些数据库用户,只有得到系统权限,才能成为数据库用户。对象权限是授予数据库用户对某些数据对象进行某些操作的权限,它既可由DBA授权,也可由数据对象的创建者授予。
第二关、定义视图
为不同的用户定义不同的视图,可以用户的访问范围。通过视图机制把需要保密的
数据对无权存取这些数据的用户隐藏起来,可以对数据库提供一定程度的安全保护。实际应用中常将视图机制与授权机制结合起来使用,首先用视图机制屏蔽一部分保密数据,然后在视图上进一步进行授权。
第三关、数据加密
数据安全隐患无处不在。一些机密数据库、商业数据等必须防止它人非法访问、修改、
拷贝。如何保证数据安全?数据加密是应用最广、成本最低廉而相对最可靠的方法。数据加密是保护数据在存储和传递过程中不被窃取或修改的有效手段。数据加密系统包括对系统的不同部分要选择何种加密算法、需要多高的安全级别、各算法之间如何协作等因素。在系统的不同部分要综合考虑执行效率与安全性之间的平衡。因为一般来讲安全性总是以牺牲系统效率为代价的。如果要在Internet上的两个客户端传递安全数据,这就要求客户端之间可以彼此判断对方的身份,传递的数据必须加密,当数据在传输中被更改时可以被发觉。
第四关、事务管理和故障恢复
事务管理和故障恢复主要是对付系统内发生的自然因素故障,保证数据和事务的一致性
和完整性。
故障恢复的主要措施是进行日志记录和数据复制。在网络数据库系统中,分布事务首先
要分解为多个子事务到各个站点上去执行,各个服务器之间还必须采取合理的算法进行分布式并发控制和提交,以保证事务的完整性。事务运行的每一步结果都记录在系统日志文件中,并且对重要数据进行复制,发生故障时根据日志文件利用数据副本准确地完成事务的恢复。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- fupindai.com 版权所有 赣ICP备2024042792号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务