论文部分内容阅读
摘要:通过叙述ASP连接Access或Sql Server数据库的几种方式,来分析访问Access和SQL Server两种Web数据库的安全机制。
关键词:ASP;Web数据库;安全机制
中图分类号:TP309文献标识码:A文章编号:1009-3044(2007)15-30621-01
Safety Mechanism of Web Database Based on ASP
XU Wei-ying
(Suzhou Vocational University,Computer Engineering Department,Suzhou 215001, China)
Abstract: Through narrating several ways for ASP to connect Access or Sql Server database, in order to analyze the safety mechanism of visiting Access or SQL Server Web database.
Key words: ASP; Web data base; Safety mechanism
1 引言
使用ASP开发Web应用程序,通常需要Web数据库来存储和管理数据。在商务网站中,数据库里存储了商品和顾客等重要信息,为了确保数据库中这些信息的安全,必须防止非法用户使用,以防数据库的信息内容被更改或窃取。本文以一个购物网站的数据库为例,详细叙述ASP访问后台数据库时的几种连接方式,并以此来分析访问Access和SQL Server两种数据库时Web数据库的安全机制。
2 ASP程序连接数据库的几种方式
在实际开发Web网站的过程中,若要访问数据库,首先必须连接数据库,然后再实现对数据库的查询、插入、更新、删除等操作。ASP程序通常是通过内置的ADO(ActiveX Data Objects)组件访问Web数据库,ADO再通过ODBC(Open DataBase Connectivity)或OLE DB驱动程序来连接与访问数据库的。我们可以根据实际需要采用下列方式之一来连接数据库。
2.1 通过ODBC设置系统数据源,连接数据库的核心代码如下:
<% '利用Server对象的CreateObject方法建立Connection对象
set conn=server.createobject("adodb.connection")
'打开Access数据库,建立连接。DSN表示在ODBC上设置的数据源,UID表示用户账号,PWD表示密码,DataBase表示数据库上的一个表
conn.open "DSN=dzlt; UID=sa; PWD=; DataBase=student"
'或打开SQL Server数据库,建立连接。DSN表示在ODBC上设置的数据源,UID表示用户账号,PWD表示密码,DataBase表示数据库
'conn.connectionstring="dsn=SQLmarket;uid=sa;pwd=123456;database=market"
'断开连接
set conn=nothing %>
2.2 直接指定ODBC驱动程序,连接数据库的主要代码如下:
<% set conn=server.createobject("adodb.connection")
'直接指定ODBC驱动程序,连接Access数据库
conn.connectionstring="driver={microsoft access driver (*.mdb)};dbq=" & server.mappath("market.mdb") & ";uid=sa;pwd=1234"
'或直接指定ODBC驱动程序,连接SQL Server数据库
'conn.connectionstring="driver={sql server};server=wwwfox-net;database=market;uid=sa;pwd=123456"
conn.open
set conn=nothing %>
2.3 直接指定OLE DB驱动程序,连接数据库的代码如下:
<% set conn=server.createobject("adodb.connection")
'直接指定OLE DB驱动程序,连接Access数据库
conn.connectionstring="provider=microsoft.jet.oledb.4.0;data source=" & server.mappath("market.mdb")
'或直接指定OLE DB驱动程序,连接SQL Server数据库
'conn.connectionstring="Provider=SQLOLEDB; Data Source=wwwfox-net; Initial Catalog=Market; User ID=sa;Password=123456;"
conn.open
set conn=nothing %>
3 ASP程序访问数据库时的安全机制
数据库的安全性包括对用户可以看到的信息进行控制。如购物网站上,我们希望对用户有以下限制:(1)每个用户必须注册,才能购物,否则只能浏览信息;(2)允许顾客获取与自己购买有关的信息,不允许顾客获取其他顾客或库存等相关信息;(3)允许顾客通过Web应用程序浏览或修改注册和购物的数据信息(如网上注册,购物等),但不允许使用其他方式修改数据库的这些信息。控制用户和应用程序对信息的访问有助于提高数据内容的可靠性,防止未授权用户的访问,以及授权用户的越权访问。
3.1 Access数据库
Access数据库和ASP常用于开发中小型Web应用程序。由于Access是文件数据库,它可以与ASP程序一起发布而不需要进行配置,具有很好的灵活性,但由此也带来了安全隐患。如果Access数据库文件在站点内部,用户通过猜出数据库路径则可以输入URL地址(如HTTP://IP地址/路径/Market.mdb)直接下载数据库,窃取数据库中信息或更改信息再上传。所以,确保数据库安全性的首要任务是防止用户下载数据库。一种方法是将数据库存放在虚拟目录以外的文件夹中,通过1.1中ODBC设置系统数据源连接数据库;另一种方法是将数据库存放在站点目录的上级目录中,在连接数据库文件时,通过2.2或2.3中的语句Server.MapPath(“../../Market.mdb”)将虚拟路径映射为物理路径。使用以上两种方法后,用户均不能下载数据库,从而有效地防止了数据库中信息内容的泄露。其次,我们可对数据库设置密码, 在Access中选择[工具]→[安全]→[设置数据库密码]设置密码。这样用户即使下载了数据库,也不能轻易地打开数据库。需要注意的是:设置密码后,在数据库连接字符串中就必须设置PWD=password。此外,在设计数据库时,我们可以把供用户访问的数据信息和供管理员访问的数据信息放在不同的数据库文件中,并存放在不同的文件夹中。如设计购物网站时,我们将允许用户访问的用户注册表、商品信息表、订单表等数据放在一个数据库中,而将不允许顾客访问的库存表及雇员表等信息放在另一个数据库中,这样供管理员进行后台管理的数据就又多了一道安全保障。
3.2 SQL Server数据库
SQL Server的安全机制可以划分为操作系统的安全性、SQL Server的登录安全性、数据库的使用安全性和数据库对象的使用安全性4个等级。在Web应用中使用SQL Server数据库,进行登录安全性验证的典型方法是把一组SQL Server登录名称和密码嵌入到Web服务器上运行的ASP程序中;然后,由Web服务器负责验证用户,应用程序则使用它自己的登录帐户供用户访问数据。下面通过设置全局组和数据库角色来分析数据库及其对象的访问安全机制。
3.2.1 设置全局组
购物网站的用户一般包括:普通用户(仅浏览网页)、购物顾客、数据库管理员等。每一组用户都有不同的数据库访问要求,即对数据库及其对象的使用权限是不同的。因此,对于每一组用户,我们分别为它创建一个满足该组用户权限要求的、域内全局有效的组,并定义组成员可以访问数据库的权限。在购物网站中,我们应该创建Data Users、Data Login Users、Data Managers等组。
3.2.2 利用角色分配权限
数据库角色能为某一用户或一组用户授予不同级别的管理或访问数据库或数据库对象的权限,这些权限是数据库专有的。而且,还可以使一个用户具有属于同一数据库的多个角色。作为应用程序角色使用的示例,假设用户 Sue 运行购物网站应用程序,该应用程序要求在数据库 Market 中的表 Login 和 Orders 上有 Select、Update 和 Insert 权限,但她在使用 SQL 查询分析器或任何其它工具访问 Login 或 Orders 表时不应有 Select、Insert 或 Update 权限。若要确保如此,可以创建一个拒绝 Login 和 Orders 表上的 Select、Insert 或 Update 权限的用户-数据库角色,然后将 Sue 添加为该数据库角色的成员。接着在 market 数据库中创建带有 Login 和 Orders 表上的 Select、Insert 和 Update 权限的应用程序角色。当应用程序运行时,它通过使用 sp_setapprole 提供密码激活应用程序,并获得访问 Login 和 Orders 表的权限。如果 Sue 尝试使用除该应用程序外的任何其它工具登录到 SQL Server 实例,则将无法访问 Login 或 Orders 表。
通过实际应用及理论分析得出简化安全策略的经验规则如下:
·用户通过运行ASP程序获得服务器和数据库的访问权限;
·通过将用户加入全局组,而全局组再加入角色获得权限,角色直接拥有数据库的访问权限;
·需要多种权限的用户可通过加入多个全局组的方式来获得权限。
只要规划恰当,就能够针对不同的Web用户完成所有的访问和权限的维护工作。
4 结束语
基于Web数据库的安全是一个系统性、综合性的问题,而且其涉及的范围很广,其中对于数据库及其对象的数据安全最为重要。还应看到,和其他技术一样,入侵者的手段也在不断提高,安全防范是一个永久性的问题,只有通过不断地改进和完善安全手段,才能保证系统的正常运行,才能提高系统的可靠性。
参考文献:
[1] 张晓晓.基于Web的数据库系统网络安全策略研究[J].中国科技信息,2005,(12):113.
[2] 王惠琴,李明,王燕.基于Web的数据库安全管理技术与实现[J].计算机应用研究,2002,(3):61-64.
[3] 高怡新. ASP网络应用程序设计[M]. 人民邮电出版社, 2005.
[4] 赵莉萍.数据库系统原理[M]. 华东理工大学出版社, 2002.
[5] 张鑫燕. SQL Server 2000程序设计[M]. 科学出版社, 2003.
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
关键词:ASP;Web数据库;安全机制
中图分类号:TP309文献标识码:A文章编号:1009-3044(2007)15-30621-01
Safety Mechanism of Web Database Based on ASP
XU Wei-ying
(Suzhou Vocational University,Computer Engineering Department,Suzhou 215001, China)
Abstract: Through narrating several ways for ASP to connect Access or Sql Server database, in order to analyze the safety mechanism of visiting Access or SQL Server Web database.
Key words: ASP; Web data base; Safety mechanism
1 引言
使用ASP开发Web应用程序,通常需要Web数据库来存储和管理数据。在商务网站中,数据库里存储了商品和顾客等重要信息,为了确保数据库中这些信息的安全,必须防止非法用户使用,以防数据库的信息内容被更改或窃取。本文以一个购物网站的数据库为例,详细叙述ASP访问后台数据库时的几种连接方式,并以此来分析访问Access和SQL Server两种数据库时Web数据库的安全机制。
2 ASP程序连接数据库的几种方式
在实际开发Web网站的过程中,若要访问数据库,首先必须连接数据库,然后再实现对数据库的查询、插入、更新、删除等操作。ASP程序通常是通过内置的ADO(ActiveX Data Objects)组件访问Web数据库,ADO再通过ODBC(Open DataBase Connectivity)或OLE DB驱动程序来连接与访问数据库的。我们可以根据实际需要采用下列方式之一来连接数据库。
2.1 通过ODBC设置系统数据源,连接数据库的核心代码如下:
<% '利用Server对象的CreateObject方法建立Connection对象
set conn=server.createobject("adodb.connection")
'打开Access数据库,建立连接。DSN表示在ODBC上设置的数据源,UID表示用户账号,PWD表示密码,DataBase表示数据库上的一个表
conn.open "DSN=dzlt; UID=sa; PWD=; DataBase=student"
'或打开SQL Server数据库,建立连接。DSN表示在ODBC上设置的数据源,UID表示用户账号,PWD表示密码,DataBase表示数据库
'conn.connectionstring="dsn=SQLmarket;uid=sa;pwd=123456;database=market"
'断开连接
set conn=nothing %>
2.2 直接指定ODBC驱动程序,连接数据库的主要代码如下:
<% set conn=server.createobject("adodb.connection")
'直接指定ODBC驱动程序,连接Access数据库
conn.connectionstring="driver={microsoft access driver (*.mdb)};dbq=" & server.mappath("market.mdb") & ";uid=sa;pwd=1234"
'或直接指定ODBC驱动程序,连接SQL Server数据库
'conn.connectionstring="driver={sql server};server=wwwfox-net;database=market;uid=sa;pwd=123456"
conn.open
set conn=nothing %>
2.3 直接指定OLE DB驱动程序,连接数据库的代码如下:
<% set conn=server.createobject("adodb.connection")
'直接指定OLE DB驱动程序,连接Access数据库
conn.connectionstring="provider=microsoft.jet.oledb.4.0;data source=" & server.mappath("market.mdb")
'或直接指定OLE DB驱动程序,连接SQL Server数据库
'conn.connectionstring="Provider=SQLOLEDB; Data Source=wwwfox-net; Initial Catalog=Market; User ID=sa;Password=123456;"
conn.open
set conn=nothing %>
3 ASP程序访问数据库时的安全机制
数据库的安全性包括对用户可以看到的信息进行控制。如购物网站上,我们希望对用户有以下限制:(1)每个用户必须注册,才能购物,否则只能浏览信息;(2)允许顾客获取与自己购买有关的信息,不允许顾客获取其他顾客或库存等相关信息;(3)允许顾客通过Web应用程序浏览或修改注册和购物的数据信息(如网上注册,购物等),但不允许使用其他方式修改数据库的这些信息。控制用户和应用程序对信息的访问有助于提高数据内容的可靠性,防止未授权用户的访问,以及授权用户的越权访问。
3.1 Access数据库
Access数据库和ASP常用于开发中小型Web应用程序。由于Access是文件数据库,它可以与ASP程序一起发布而不需要进行配置,具有很好的灵活性,但由此也带来了安全隐患。如果Access数据库文件在站点内部,用户通过猜出数据库路径则可以输入URL地址(如HTTP://IP地址/路径/Market.mdb)直接下载数据库,窃取数据库中信息或更改信息再上传。所以,确保数据库安全性的首要任务是防止用户下载数据库。一种方法是将数据库存放在虚拟目录以外的文件夹中,通过1.1中ODBC设置系统数据源连接数据库;另一种方法是将数据库存放在站点目录的上级目录中,在连接数据库文件时,通过2.2或2.3中的语句Server.MapPath(“../../Market.mdb”)将虚拟路径映射为物理路径。使用以上两种方法后,用户均不能下载数据库,从而有效地防止了数据库中信息内容的泄露。其次,我们可对数据库设置密码, 在Access中选择[工具]→[安全]→[设置数据库密码]设置密码。这样用户即使下载了数据库,也不能轻易地打开数据库。需要注意的是:设置密码后,在数据库连接字符串中就必须设置PWD=password。此外,在设计数据库时,我们可以把供用户访问的数据信息和供管理员访问的数据信息放在不同的数据库文件中,并存放在不同的文件夹中。如设计购物网站时,我们将允许用户访问的用户注册表、商品信息表、订单表等数据放在一个数据库中,而将不允许顾客访问的库存表及雇员表等信息放在另一个数据库中,这样供管理员进行后台管理的数据就又多了一道安全保障。
3.2 SQL Server数据库
SQL Server的安全机制可以划分为操作系统的安全性、SQL Server的登录安全性、数据库的使用安全性和数据库对象的使用安全性4个等级。在Web应用中使用SQL Server数据库,进行登录安全性验证的典型方法是把一组SQL Server登录名称和密码嵌入到Web服务器上运行的ASP程序中;然后,由Web服务器负责验证用户,应用程序则使用它自己的登录帐户供用户访问数据。下面通过设置全局组和数据库角色来分析数据库及其对象的访问安全机制。
3.2.1 设置全局组
购物网站的用户一般包括:普通用户(仅浏览网页)、购物顾客、数据库管理员等。每一组用户都有不同的数据库访问要求,即对数据库及其对象的使用权限是不同的。因此,对于每一组用户,我们分别为它创建一个满足该组用户权限要求的、域内全局有效的组,并定义组成员可以访问数据库的权限。在购物网站中,我们应该创建Data Users、Data Login Users、Data Managers等组。
3.2.2 利用角色分配权限
数据库角色能为某一用户或一组用户授予不同级别的管理或访问数据库或数据库对象的权限,这些权限是数据库专有的。而且,还可以使一个用户具有属于同一数据库的多个角色。作为应用程序角色使用的示例,假设用户 Sue 运行购物网站应用程序,该应用程序要求在数据库 Market 中的表 Login 和 Orders 上有 Select、Update 和 Insert 权限,但她在使用 SQL 查询分析器或任何其它工具访问 Login 或 Orders 表时不应有 Select、Insert 或 Update 权限。若要确保如此,可以创建一个拒绝 Login 和 Orders 表上的 Select、Insert 或 Update 权限的用户-数据库角色,然后将 Sue 添加为该数据库角色的成员。接着在 market 数据库中创建带有 Login 和 Orders 表上的 Select、Insert 和 Update 权限的应用程序角色。当应用程序运行时,它通过使用 sp_setapprole 提供密码激活应用程序,并获得访问 Login 和 Orders 表的权限。如果 Sue 尝试使用除该应用程序外的任何其它工具登录到 SQL Server 实例,则将无法访问 Login 或 Orders 表。
通过实际应用及理论分析得出简化安全策略的经验规则如下:
·用户通过运行ASP程序获得服务器和数据库的访问权限;
·通过将用户加入全局组,而全局组再加入角色获得权限,角色直接拥有数据库的访问权限;
·需要多种权限的用户可通过加入多个全局组的方式来获得权限。
只要规划恰当,就能够针对不同的Web用户完成所有的访问和权限的维护工作。
4 结束语
基于Web数据库的安全是一个系统性、综合性的问题,而且其涉及的范围很广,其中对于数据库及其对象的数据安全最为重要。还应看到,和其他技术一样,入侵者的手段也在不断提高,安全防范是一个永久性的问题,只有通过不断地改进和完善安全手段,才能保证系统的正常运行,才能提高系统的可靠性。
参考文献:
[1] 张晓晓.基于Web的数据库系统网络安全策略研究[J].中国科技信息,2005,(12):113.
[2] 王惠琴,李明,王燕.基于Web的数据库安全管理技术与实现[J].计算机应用研究,2002,(3):61-64.
[3] 高怡新. ASP网络应用程序设计[M]. 人民邮电出版社, 2005.
[4] 赵莉萍.数据库系统原理[M]. 华东理工大学出版社, 2002.
[5] 张鑫燕. SQL Server 2000程序设计[M]. 科学出版社, 2003.
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。