Web数据库安全问题的探讨

时间:2022-10-29 06:59:24

Web数据库安全问题的探讨

摘要:随着网络经济时代的到来,电子商务的迅速发展,企业对WEB数据库提出了更高、更全面的安全性要求。该文从WEB数据库安全的理念、相关技术入手,结合,提出WEB数据库安全实践方法建议。

关键词:;安全性;WEB数据库;SQL;用户安全管理

中图分类号:TN915 文献标识码:A 文章编号:1009-3044(2009)36-10403-03

网络数据库也叫Web数据库。将数据库技术与Web技术融合在一起,实现数据库与网络技术的无缝结合而形成的数据库就是网络数据库。网络经济的迅速发展,企业(或客户)希望能够在任何时候、任何地方、利用任何工具都可以获得网络上的信息,并享受网络通信所带来的经济效益。在实际应用中,网络后台数据库的安全性和计算机系统得安全性相互联系、相互支持,只有各个环节都安全了,才能保证数据库的安全性,才能防止不合法的使用所造成的数据泄密、更改或破坏。

1 Web数据库概述

Web数据库中,用户通过浏览器就可以完成对后台数据库中数据的插入、删除、查询和修改等操作。

随着网络技术的迅速发展, Web数据库里一些商业数据被盗窃后公布于网上、公司商业网站的产品价格数据被恶意修改等等。出现这些现象的原因只有一个,就是来自网络上对Web数据库攻击。到现在,针对Web数据库的应用级入侵已经变得越来越猖獗。如SQL注入、跨站点脚本攻击和未经授权的用户访问等,所有这些入侵都有可能绕过前台安全系统,并对数据库系统攻击。那么,在Web环境下的数据库怎样能够为企业提供可依赖的安全服务呢?

2 提高Web数据库安全性的对策

2.1 提高平台的安全性

应用程序需要访问WEB数据库等非Windows资源,考虑以下几个问题:

2.1.1 保护SQL会话状态

默认(进程内)会话状态处理程序会受到某些限制。例如,它不能在网络中的其他计算机上运行。为了克服此限制,允许在SQL Server数据库中存储会话状态。

可以在Machine.config或Web.config中配置SQL会话状态。

machine.config的默认设置如下所示。

stateConnectionString="tepip=127.0.0.1:42424"

stateNetworkTimeout="10"

sqlConnecti0nString="data source=127.0.0.1;

userid=sa;password="

cookieless="false” timeout="20"/>

默认情况下,SQL脚本InstallSqlState.sql(用于生成SQL会话状态使用的数据库)安装在以下位置:C:\WINNT\\Framework\v1.0.3705。

2.1.2 采用基于信任连接

为了保证数据源的安全,应注意用户标识、密码和数据源名称等连接信息的私密性。使用信任连接是连接到SQL Server最安全的方法,它不在连接字符串中公开用户标识和密码,建议使用该方法对连接进行身份验证。采用基于信任连接SQL Server连接方式是连接SQL Server数据库法中比较安全且有效的方式。

2.1.3 防止SQL注入式攻击

现时很多网站都流行使用ASP+SQLServer平台来开发,开发者往往忽略对用户输入数据的合法性判断而很容易存在安全隐患。当用户提交一段SQL查询代码,根据返回的结果可获得某些他想得知的数据。这就是SQL注入。攻击者常利用这种技术,达到取得隐藏数据甚至执行数据库主机操作系统命令的目的,后果轻则导致敏感信息泄漏,重则使整个服务器受控。SQL注入的各种途径如下:[2]

1) 注入点查询法:如客户端故意提交一个网址localhost/xgrsjj/index.asp?ID=123 and user>0,服务器运行Select * from 表名 where 某字段=123 and user>0,当然是运行不下去,错误信息为:MicrosoftOLE DB Provider for ODBC Drivers (Ox80040E07) [Microsoft][ODBC SQL Server Driver][SQL Server],将nvarchar值’bmbm’转换为数据类型为int的列时发生语法错误。/ xgrsjj/index.asp,第47行。从上可知:该站使用SQL Server数据库,用ODBC连接,连接帐号名rsj。

攻击者可再假设网站管理员帐号存在表login中,管理员帐号名为admin,想知道管理员密码,他可再提交...(上述语句) and(Select password from login where user_name=’admin’)>0。出错信息为:Microsoft OLE DB Provider for ODBC Drivers(Ox80040EO?)[Microsoft][0DBc SQL Server Driver][SQL Server],将varchar值'!l@#*&admin’转换为数据类型为int的列时发生语法错误。/ xgrsjj/index.asp,第47行。很明显,’!@#*&admin’就是管理员admin的密码!攻击者就可用这个帐号和密码接管该网站!再继续,他将可获得数据库连接帐号权限内所能获得的大量信息。

2) ASCII码逐字解码法:如客户端输入这个网址,localhost/ xgrsjj /news.asp?id=xx and(select top 1 len(username)from TestDB.dbo.admin)=x,其中x为1,2,...,n之一,username为用户名字段,admin为表名,若运行正常则x就是第一个用户名的长度。如输入…=8运行正常,则第一个用户名的长度为8。

再输入这个网址…and(select top l ascii(substring (username,m,1))from TestDB.dbo.admin)=n,其中m为l到用户名长度之一,猜测第i位的值,n为ASCII码中14128之一,若运行正常则n对应的ASCII码为用户名某一位值。如输入...substring(username,3,1)...=80时运行正常,则用户名的第3位为字符P(ASCII为80)。

2.1.4 对特定字符串的过滤

现在一些网站的后台管理程序存在着很大漏洞,只要在登录表单输入'or''and''or'、'or' 1'='1诸如此类的一些字符串就可以顺利登录。这种登录的原理是在客户端巧妙地构造一些特殊字符串,当在客户端浏览器登录表单里输入这些字符串进行登录验证时, SQL的查询语句就会把这个字符串加在SQL语句后面,并解释成一个永真值,从而通过验证。如前面所提到的’or "and"or' 、'or' 1'='1,SQL语句分别把它们解释成“空” =“空”、1'=' 1,显然这两个值是永远成立的[3]。

如果不进行字符串过滤的话,在default.aspx页面的用户名一栏输入’or "and" or',点击确定,系统将自动转到success.aspx页面,显示登录成功。下面讲如何避免这一情况的发生,使用Replace系统函数进行字符串的过滤,Repalce语法规则如下:

Replace(变量名称,“要过滤的字符”, “要替换的字符”)

说明:“要替换的字符”那里如果留空,就是把“要过滤的字符”直接删除。

把check.aspx中接收用户名、密码的表单程序作改造如下:

'check.aspx

'嵌套了三个replace函数,先过滤空格,然后过滤特殊字符’username=Replace{Replace(replace(request("username")," "," ")," "," "),"or"," ")

Pwd=Replace(Replace(replace(request("pwd"),"", " "), "or"," ")

2.2 提高数据库自身安全

2.2.1 对用户安全管理

Web数据库是个极为复杂的系统,因此很难进行正确的配置和安全维护,当然,必须首先要保证的就是数据库用户的权限的安全性。当用户通过Web方式要对数据库中的对象(表、视图、触发器、存储过程等)进行操作时,必须通过数据库访问的身份认证。多数数据库系统有默认账号和密码,可支持对数据库资源的各级访问。因此,很多重要的数据库系统很可能受到威协。用户存取权限是指不同的用户对于不同的数据对象有不同的操作权限。存取权限由两个要素组成:数据对象和操作类型。定义一个用户的存取权限就是要定义这个用户可以在哪些数据对象上进行哪些类型的操作。权限分系统权限和对象权限两种。系统权限由DBA授予某些数据库用户,只有得到系统权限,才能成为数据库用户。对象权限是授予数据库用户对某些数据对象进行某些操作的权限,它既可由DBA授权,也可由数据对象的创建者授予。

2.2.2 采用视图维护数据库的安全性

可通过视图访问的数据不作为独特的对象存储在数据库内,数据库内存储的是SELECT语句,SEIECT语句的结果集构成视图所返回的虚拟表。用户可以用引用表时所防止用户对基表的操作,在Transact―SQL语句中通过引用视图名称来使用虚拟表。基于视图的信息,隔离保护机制通过授予用户操作视图的权限,可以防止用户对基表的操作,同时用户对于数据库具有小同的权限,为不同的用户定义不同的视图,可以限制用户的访问范围,即当一个用户在执行某种任务时,他得到的权限只能使他看到完成此任务所应看到的数据库的部分。

通过视图机制把需要保密的数据对无权存取这些数据的用户隐藏起来。可以对数据库提供一定程度的安全保护。实际应用中常将视图机制与授权机制结合起来使用,首先用视图机制屏蔽一部分保密数据,然后在视图上进一步进行授权。

2.2.3 数据加密

数据安全隐患无处不在。一些机密数据库、商业数据等必须防止它人非法访问、修改、拷贝。如何保证数据安全?数据加密是应用最广、成本最低廉而相对最可靠的方法。数据加密是保护数据在存储和传递过程中不被窃取或修改的有效手段。数据加密系统包括对系统的不同部分要选择何种加密算法、需要多高的安全级别、各算法之间如何协作等因素。在系统的不同部分要综合考虑执行效率与安全性之间的平衡。因为一般来讲安全性总是以牺牲系统效率为代价的 如果要在Internet上的两个客户端传递安全数据,这就要求客户端之间可以彼此判断对方的身份,传递的数据必须加密。当数据在传输中被更改时可以被发觉。

2.2.4 审计追踪和攻击检测

身份验证和存储访问控制是目前网络信息系统设计中最为普遍的安全性方法,但目前没有一种可行的方法,可以彻底的解决合法用户在通过身份认证后滥用特权的问题。因而, 一些网络信息系统中的大型DBMS提供的审计追踪和攻击检测便成了一个十分重要的安全措施,也是任何一个安全系统中不可缺少的最后一道防线。审计功能在系统运行时,可以自动对数据库的所有操作记录在审计日志中,以此来监视各用户对数据库施加的动作。攻击检测系统则是根据审计数据分析检测内部和外部攻击者的攻击企图,再现导致系统现状的事件,分析发现系统安全的弱点,追查相关责任者。

审计追踪机制是指系统设置相应的日志记录,特别是对数据更新、删除、修改的记录,以便日后查证。日志记录的内容可以包括操作人员的名称、使用的密码、用户的IP地址、登录时间、操作内容等。若发现系统的数据遭到破坏,可以根据日志记录追究责任,或者从日志记录中判断密码是否被盗。以便修改密码。重新分配权限,确保系统的安全。

2.2.5 网络数据库的备份与恢复

计算机故障的原因多种多样,包括磁盘故障、电源故障、软件故障、灾害故障以及人为破坏等。一旦发生这种情况,就可能造成数据库的数据丢失。因此数据库系统必须采取必要的措施,以保证发生故障时,可以恢复数据库。数据备份与恢复是实现信息系统安全运行的重要技术之一,能保证该系统因各种原因遭到破坏时,能够将数据库系统还原到正常状态。

加强数据备份非常重要,数据库拥有很多关键的数据,这些数据一旦遭到破坏后果不堪设想。而这往往是入侵者真正关心的东西。不少管理员在这点上作得并不好。不是备份不完全,就是备份不及时。数据备份需要仔细计划,制定出一个策略测试后再去实施,备份计划也需要不断地调整。

为了保证数据库的安全性,应用数据库的备份是很重要的举措。一般的数据备份解决方案无非是以下三种:磁带备份、双机热备份、手工备份方法。

2.2.6 改变SQL Server的端口并隐藏SQL Server实例

默认情况下,SQL Server使用1433端口监听,如果SQL Server配置的时候要把这个端口改变,这样别人就不能很容易地知道使用的什么端口了。但通过微软未公开的1434端口的UDP探测还是可以探测列SQL Server使用的TCP/IP端口。

为了过滤TCP端口1433以及UDP端口l434的数据包,防止图谋者利用端口探测信息,避免数据库服务器CPU负荷增大,SQL Server数据库系统端口设置不容忽视。首先应在实例属性中选择TCP/IP协议的属性,选择隐藏SQL Server实例,则将禁止对试图枚举网络上现有的SQL Server实例的客户端所发出的广播作出响应。这样,可以避免利用1434来探测SQL server使用的TCP/IP端口。其次在实例属性中选择网络配置中的TCP/IP协议的属性,将TCP/IP使用的默认端口变为其他端口。再次,在防火墙上设置禁用SQL Server端口。

2.2.7 防下载处理

为了防止网站在暴库或被得知数据库路径后,用户从客户端下载数据库。这里提供两种简单的数据库防下载处理方法。

1) 修改IIS配置:这种方法适合有IIs修改权的用户。在Internet信息服务中,找到登录注册系统的虚拟目录,右键单击/属性/虚拟目录选卡/配置/应用程序配置,如图1所示。在应用程序映射中为.mdb添加一个可执行程序即可。

2) 修改数据库文件扩展名:把DataSource.mdb数据库文件的后缀名改成.aspx,这样可以避免从客户端下载后台数据库。

3 结论

Web数据库的安全是由网络系统、操作系统、数据库管理系统共同决定的,它的安全防范是多层次,大范围的,任何一个环节上的疏忽,都会给整个系统带来安全风险,因此必须根据具体的应用环境来进行全面分析,使安全隐患降到最小。

参考文献:

[1] 刘亮亮.开发更安全的 2.0应用程序[M].北京:人民邮电出版社,2008.

[2] 刘丽琳.浅析网站数据库安全中的SQL注入及防范措施[J].和田师范专科学校学报,2007(1):188-189.

[3] 翟曜网络数据库安全性浅析[J].电脑编程与维护技巧,2006(10):80.

上一篇:基于路面识别实时控制车轮滑移率的ABS系统 下一篇:利用Windows服务实现数据库数据监控