WEB环境下SQL Server的安全策略

2009-01-28 09:36蔡宗吟
企业导报 2009年11期
关键词:安全策略

杨 骏 蔡宗吟

【摘要】 针对B/S模式下SQL Server数据库存在的各种安全问题,从数据库服务器开发的角度提出的安全策略,以增强系统的安全性,有效地保护系统数据。

【关键词】 SQL Server;安全策略;SQL注入攻击; MD5加密

随着互联网络的日益发展和壮大,越来越多的应用系统采用基于浏览器/服务器的模式(Browser/Server model,简称B/S)进行开发。采用Windows系列的操作系统作为服务器、Internet信息服务(Internet Information Services,简称IIS)作为WEB服务器、ASP或ASP.NET为开发平台、SQL Server 2000/2005为后台数据库服务器的组合更是举不胜举。这样的组合,成为了业界在安全问题上的典型例子,这当中有像Windows操作系统的游客账号安全性、早期IIS版本的漏洞、ASP自身的缺陷、SQL Server数据库端的注入等安全问题。这样就给基于WEB的应用系统的安全性带来严峻的考验,我们必须有针对性的对各种安全问题进行深入的分析,提出有效的解决方案。

一、现有安全问题及其分类

(一)数据库服务器配置安全问题

主要是指对数据库服务器操作系统的管理、升级、配置和网络安全的管理带来的安全问题,一般可以理解为是操作系统的管理员疏忽所致。

(二)WEB服务器配置安全问题

WEB服务器操作系统的配置管理也相当有讲究,不仅要升级最新的补丁,还需要实时更新防毒软件和防木马软件等;包括防火墙和网络过滤软件、IP过滤系统等安装和配置。

(三)数据库服务器开发的安全问题

这类安全问题通常是对数据库管理系统本身的管理存在较大的漏洞和风险。

1.服务器帐户安全。主要体现在登录到数据库服务器的SQL Server帐户信息管理不善,通常可能出现的情况是系统管理员sa密码为空或密码过于简单;也可能出现数据库中guest用户激活并且权限过高,造成数据库数据的丢失或泄露。

2.使用服务器高级功能不当。有很多WEB应用系统都把所有的业务逻辑都放在客户端或WEB服务器来实现,没有充分利用数据库像存储过程之类的对象,不仅仅是带来网络流量的增加,还面临像“SQL注入攻击”之类的安全问题。

3.敏感数据安全问题。如果WEB程序把系统账户信息的密码等敏感数据用明文来进行存储,最大的问题就是一旦数据库出现安全问题,发生系统账户信息泄露,必将造成巨大的影响,甚至面临法律责任;使用明文密码也不能有效的避免操作人员的职业道德沦丧而导致的恶劣后果。

(四) 应用系统开发的安全问题

WEB服务器端编程时也可能由于程序员或系统分析师的疏忽大意而给人以可趁之机。

1.直接暴露数据库连接信息。通常应用系统都会将数据库的连接信息以配置文件(过去是.ini文件,现在一般采用.xml文件)给出,既方便程序读取,也方便安装时的随意修改。但一旦配置文件信息发生泄露,则数据库服务器的相关信息就完全暴露了,将导致严重的后果。

2.未对用户的输入数据进行限制。赫赫有名的“SQL注入攻击”其实是利用程序中用户输入的任意性,使用了像“;”(半角分号)、“'”(半角单引号)以及像select、insert、delete等关键字来实施非法获取数据库信息或者进行破坏性的操作等。

3.忽视了WEB报错信息。如果在IIS上不做任何新的处理,则网页在遇到错误时,服务器默认会显示所有错误信息,对于“老鸟”级别的用户来说,这些错误信息对于入侵系统来说,作用相当巨大。

二、相应的安全策略

在前面提及的安全问题中,与服务器配置相关的,在此不再赘述;本节主要提出在数据库服务器的开发中的安全策略和应用系统开发中安全策略。

(一)数据库端的开发安全策略

数据库服务器在开发时可以采用一些安全策略来尽量避免前面遇到的安全问题。

1.建立恰当权限的数据库账户。根据应用系统中登录系统的角色不同,完全可以在数据库中创建不同权限的登录名来对应不同的数据库权限。即便拥有读数据权限账号出问题,也不至于造成巨大的影响。

2.充分利用存储过程。存储过程(storedprocedure)是一种高级数据库对象,既可以简化命令,又可以有效地防止某些“SQL注入”的攻击,而且存储过程还采用了“预编译”的机制,大提高了执行效率。

3.加密口令等敏感数据。为了在数据库泄漏也能最大程度地保持数据的安全,一般对敏感数据(如口令)都可以采用单向的加密方法,如MD5加密算法。这种方法的优点是单向加密,加密后的密文不能翻译为明文,主要用来保护口令等数据。

(二)应用系统的开发安全策略

WEB应用端的开发相关安全性也应该得到良好的解决。

1.封装数据库连接信息。把数据库连接信息存放于配置文件中虽然方便,但同时也带来系统安全问题,所以,可以考虑把数据库连接信息加密以后存入源码中,并同时编译生成中间代码,如C#的.dll文件或Java的.class文件。

2.过滤输入的特殊符号和关键字。“SQL注入攻击”存在的主要原因是用户可以自由输入各种符号,所以,最为直接的方式就是过滤用户输入的敏感字符,如“'”(半角单引号)、“;”(半角分号)以及各种数据库相关的关键字,尤其是可能严重后果的“delete”、“drop”、“truncate table”等,以保护数据库的安全性;同时也能够有效的保护数据防止意外泄漏。

3.自定义WEB服务器的错误信息。在程序出现错误时,为了有效的保护服务器数据和信息,可以对出错的信息进行自定义。自定义的含义即是指定新的错误页面来代替IIS默认的错误信息,这样,可以有效的保护服务器的错误信息,也能达到对用户透明,使错误信息看起来更人性化,更为重要的,是进一步保护应用系统的安分性。

通过以上的处理,WEB系统的安全性改进了很多。我们在小区物业管理系统中使用以上相关的安全策略,系统的安全性得到了较大的改善。但是,我们还应该看到,因为涉及到数据库服务器,应用服务器,客户端程序(尤其是现在富客户程序的大量应用)三个方面,整个系统的安全性工作还有相当长的路要走,这也是一项不可能有终点的工作,还需要进行不断的探索和研究。

参考文献

[1]谷震离,杜根远.SQL Server数据库应用程序中数据库安全性研究[J].计算机工程与设计.2007(8)

[2]微软公司.Programming a Microsoft SQL Server 2000 database[M].北京:清华大学出版社,2001

[3]潘志红.WEB环境下SQL Server的数据保护[J].北京联合大学学报(自然科学版).2006(9)

[4]吴世忠,Schneier.B应用密码学:协议算法与C源程序[M].北京:机械出版社,2001

注:本文为乐山师范学院校级科研基金项目(20923)

猜你喜欢
安全策略
基于认知负荷理论的叉车安全策略分析
基于飞行疲劳角度探究民航飞行员飞行安全策略
浅析涉密信息系统安全策略
如何加强农村食盐消费安全策略