SQL Server和MySQL的安全性分析

『 更新时间:2008-4-14 』『 字体:变小 变大 』『 作者:佚名 | 来源:互联网

 using System;
  using System.Net.Sockets;
  using System.Net;
  using System.Text;
  using System.Threading;
  namespace ConsoleApplication3
  {
  class Class1
  {
  //创建一个UDPCLIENT实例
  private static UdpClient m_Client;
  //LISTEN用来获取返回的信息
  public static string Listen(string hostip)
  {
  string HostIP = hostip;
  IPAddress thisIP = IPAddress.Parse(HostIP);
  IPEndPoint host = new IPEndPoint(thisIP,1434);
  byte [] data = m_Client.Receive(ref host);
  Encoding ASCII = Encoding.ASCII;
  String strData = ASCII.GetString(data);
  return strData;
  }
  //SEND
  public static void Send(string hostip)
  {
  string HostIP = hostip;
  byte [] buffer = {02};
  //02为要发送的数据,只有02、03、04有回应
  int ecode = m_Client.Send(buffer,1,HostIP,1434);
  //ecode用来返回是否成功发送
  if(ecode <= 0)
  {
  Console.WriteLine("发送时出错:" + ecode);
  }
  }
  //对返回的信息的简单的处理
  public static void OutputInfo(string strdata)
  {
  string str = strdata;
  //str.le
  char [] that = {‘;‘,‘;‘};
  string [] strofthis =str.Split(that);
  //int i= 0
  for(int i=0;i{
  Console.Write(strofthis);
  Console.Write(‘
  ‘);
  }
  }
  //输入IP
  public static string InputHostIP()
  {
  Console.Write("enter the ip you want to scan:
  ");
  string hostip =Console.ReadLine();
  Console.Write(‘
  ‘);
  return hostip;
  }
  //EXIT
  public static void Exit()
  {
  Console.WriteLine("if you want to exit ,just input 1
  ");
  int a = Console.Read();
  if(a!= 1)
  {
  Console.WriteLine("if you want to exit ,just input 1
  ");
  Console.Read();
  }
  else
  {
  }
  }
  [STAThread]
  static void Main(string[] args)
  {
  string HostIP;
  HostIP = InputHostIP();
  Console.WriteLine("Begin to send udp to the host");
  m_Client = new UdpClient();
  Send(HostIP);
  string strData=Listen(HostIP);
  OutputInfo(strData);
  Exit();
  }
  }
  }

  3一个典型的返回的信息

  ServerName;AWEN;

  InstanceName;AWEN;

  IsClustered;No;

  Version;8.00.194;

  tcp;1044; (TCP的端口,可见就算改了端口也是很容易找到的)

  np;\\AWEN\pipe\MSSQL$XHT310\sql\query;

  解决办法:安装防火墙,或者利用Windows 2000系统的ipsec对网络连接进行ip限制,实现IP数据包的安全性。对IP连接进行限制,只保证自己的IP能够访问,拒绝其他IP进行的端口连接,把来自网络上的安全威胁进行有效的控制。重要的是,还要对端口作过滤,包括大部分的tcp和udp端口,因为仅仅做ip限制的话,有可能恶意攻击者先攻击被数据库服务器信任的主机,控制之后作为跳板对数据库服务器进行攻击。

  2.数据库的密码探测

  密码攻击包括两种,破解密码和网络监听。破解密码是使用工具不停的连接数据库来猜测密码, 包括字典攻击,暴力攻击和界于两者之间的半暴力半字典攻击。通常攻击者先采用字典攻击的方法, 没有成功的话依次采用半暴力半字典攻击,暴力攻击。在网络速度够好,电脑运算能力够强的情况下,这 样的密码攻击危害是相当大的。网络监听则是控制一台网络设备,在上面运行监听工具捕获在网络中 传送的密码信息。网络监听可以分为两种,一种是外部的监听,将侦听工具软件放到网络连接的设备或者 放到可以控制网络连接设备的电脑上,这里的网络连接设备,比如网关服务器,比如路由器等等。另外一 种是来自内部的监听,对于不安全的局域网,数据是采用广播的方式传播的,只要把网卡设置为混杂模式即可接收到本来不属于自己的数据包,当然可能包括密码信息等资料。

  解决方法:针对密码破解,只要把密码设置为足够强壮,并且对同个ip地址不停的连接请求进行屏蔽即可。 但是对于监听来说,网络传输的时候如果不加密的话,所有的网络传输都是明文的,包括密码、数据库内容等 等,不管多么复杂的密码都是于事无补的,这是一个很大的安全威胁。所以,在条件容许情况下,最好使用SSL

  来加密协议,当然,你需要一个证书来支持。并且,对于网络监听应该及时发现,如果网络中的丢包率突然提 高,那么就有理由怀疑网络遭到监听。

  3.脚本安全

  脚本安全本身就是个非常复杂的问题,足以写一篇专业的长篇分析文章,而且我对脚本不是很内行,mix,envymask,pskey,angel他们比较疯狂,哈哈。脚本

  安全主要是对提交的数据缺乏严格的检查导致的,比较危险的符号有“;”,“ ”,“#”,“--”,“$”, “\”等。这个问题最初被认为是asp+sql server的问题,但是很快就发现实质上它的影响非常大,后来有人继续深入发现在php+mysql该问题依然会存在,san对php作过深入分析,有兴趣的去安全焦点找他的文章。对于脚本

  好象没有特有效的解决方法,只有依靠程序员的个人素质了……

  总结,不管是mysql,还是mssql,在外部网络中,都受到相当大的威胁。相比而言,mssql受到的威胁甚至要更大些,最近2年来,mssql暴露出了多个远程溢出漏洞。如果配置的比较好的话,我认为,mysql要比mssql安全一些,因为随时会爆发的新溢出漏洞是防不胜防的,而且能够执行系统命令的sql注入攻击也非常可怕。好了,限于篇幅,这篇文章到此结束。

上一页  [1] [2] 

【点击数:】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口

关文章

您的姓名:
评分等级:
1分 2分 3分 4分 5分
评论内容:
1、严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
2、用户需对自己在使用金石网服务过程中的行为承担法律责任。
3、本站管理员有权保留或删除评论内容。
4、评论内容只代表网友个人观点,与本网站立场无关。
  • 金石网
  • | 设为首页 | 加入收藏 | 联系我们 | 版权申明 | 友情链接 | 站点地图 | 网站帮助 | 网站留言 | 广告服务 |
  • Copyright © 2001-2008 KingsNet.biz All Rights Reserved. 闽ICP备05026663号
  • 返回网站顶部