当前位置: 首页 > 图文教程 > 数据库 > MSSQL > Mssql和Mysql的安全性分析

MSSQL
SQL Server 压缩日志及数据库文件大小
名词解释:带你轻松接触13个数据库术语
自定义数据库自动编号初始值和步进值
合理设置内存让数据库与其他程序共存
SQL Server 2005:数据类型最大值
数据库手边系列:SQL Server数据表信息
SQL Server讲堂:备份和恢复措施
八个有用的WordPress的SQL语句
SQL Server中链接服务器将替代远程服务器
SQLServer与服务器连接时出错的解决方案
在 SQL Server 数据库开发中的十大问题
SQLServer 游标简介与使用说明
SQLServer 存储过程简介与使用方法
数据库大战: MS SQL Server & IBM DB2
如何了解SQL的执行频率
SQL技巧:快速掌握一些异常精妙的"SQL"语句
经验:解决DB2中出现的SQL1032N错误现象
菜鸟课堂:MySQL权限的详细解答
SQL大讲堂:如何了解SQL的执行频率
扫盲大讲堂:SQL查询结果集对注入的影响及利用

MSSQL 中的 Mssql和Mysql的安全性分析


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 50 ::
收藏到网摘: n/a

 

yanweidong1030 [原作]

数据库是电子商务、金融以及ERP系统的基础,通常都保存着重要的商业伙伴和
客户信息。大多数企业、组织以及政府部门的电子数据都保存在各种数据库中,他们
用这些数据库保存一些个人资料,还掌握着敏感的金融数据。但是数据库通常没有象
操作系统和网络这样在安全性上受到重视。数据是企业,组织的命脉所在,因此选择
一款安全的数据库是至关重要的。大型网站一般使用oracle或DB2,而中小型网站大
多数使用更加灵活小巧的mssql数据库或者mysql数据库。那么,在同样的条件下,微
软的mssql和免费的mysql哪个更加安全呢?

我在我的机子上面用管理员帐号默认安装了mssql和mysql以便在相同的情况下测
试他们的安全性。我的系统配置如下:操作系统Microsoft Windows 2000 Version5.0,
安装了sp4,ftp服务和iis服务,支持asp和php。系统只有一个管理员帐号admin,guest
帐号没有禁用。


一.系统内部安全性分析


1.mysql数据库权限控制问题

mysql的权限控制是基于mysql这个数据库的,叫做授权表,一共包括包括六个表
columns_priv,db,func,host,tables_priv和user。先使用desc user命令查看非
常重要的user表的结构以便查询内容,现在可以查看他的权限设置了。
使用命令select host,user,password,delete_priv,update_priv,drop_priv from user;
这个命令查看了几个比较危险的权限,显示结果如下:
mysql> select host,user,password,delete_priv,update_priv,drop_priv from user;
+-----------+------+------------------+-------------+-------------+-----------+
| host | user | password | delete_priv | update_priv | drop_priv |
+-----------+------+------------------+-------------+-------------+-----------+
| localhost | root |0e4941f53f6fa106 | Y | Y | Y |
| % | root | | Y | Y | Y |
| localhost | | | Y | Y | Y |
| % | | | N | N | N |
+-----------+------+------------------+-------------+-------------+-----------+
4 rows in set (0.00 sec)
第一条表示在本机使用root用密码登陆,拥有删除记录,修改记录,删除表等权限,
好,这是安全的。第二条表示在任何主机使用root不需密码登陆,拥有删除记录,
修改记录,删除表等权限。第三条表示在本机匿名登陆,拥有删除记录,修改记
录,删除表等权限。最后条表示可以再任何主机匿名登陆,但是没有任何权限。
显然,第二,三,四都是不安全的!第二条不用说,就第三条而言,就算你在本地
是guest权限,但是也可以登陆mysql数据库,而且拥有全部权限。这样,就可以对数
据库为所欲为了。
解决方法:如果你不需要远程维护,删除掉第二条,delete from user where
host="%" and user="root";或者给它加个强壮的密码。删除第三条,delete from
user where host="localhost" and user="";


2.mysql安装目录权限问题

mysql默认安装到c:\mysql,但是c盘默认是everyone完全控制,由于权限的继承
性,c:\mysql对everyone也是完全控制的,显然这样是不安全的。因为恶意用户可以
删除重要的数据文件。
解决方法:重新设置mysql目录的存取权限。或者将mysql安装到其他目录,如果
你移动Mysql分发到D:\mysql,你就必须使用用
D:\mysql\bin\mysqld --basedir D:\mysql来启动mysqld,甚至还需要修改它的配置
文件。

3.mssql数据库权限控制问题

mssql数据库的权限控制是基于master库的syslogins表,拥有所有权限的帐号是
sa,其他还有sysadmin,db_owner等不同权限帐号。但是,mssql数据库最高权限帐
号sa的默认密码是空,这样如果安装的时候不注意,就会给数据带来毁灭性的灾难。
恶意攻击者可以修改,删除所有数据,更加重要的是mssql帐号可以利用扩展执行系
统命令。
解决方法:定期检查所有登陆帐号,查看是否有不符合要求的密码。
Use master
Select name,Password from syslogins where password is null命令检查是否有空
口令帐号存在。尽可能的删除存储扩展,防止本地用户利用存储扩展执行恶意命令。
use master
sp_dropextendedproc xp_cmdshell 命令删除xp_cmdshell扩展。

4.mssql安装目录权限问题

同mysql一样,mssql也是安装到everyone完全控制c盘,由于存取控制问题,最
好安装到d盘等非系统盘进行严格的权限控制。而且,由于mssql数据库与系统结合非常紧密,系统管理员在没有数据库密码的情况下也可以通过选择windows验证来操作数据库。因此,普通用户有可能通过系统漏洞提升自己的权限,对数据库进行破坏。

解决办法:除了严格的存取限制外,还要定期查看SQL Server日志检查是否有可
疑的登录事件发生,或者使用DOS命令findstr /C:"登录" d:\Microsoft SQL Server\MSSQL\