none
网站被黑客攻击 RRS feed

  • 问题

  • 我的网站在共享的服务器上,为了网站的安全,我将数据库连接(数据库连接在web.config中)用程序加密,例如:

    string provider = "RSAProtectedConfigurationProvider" ;

    string section = "connectionStrings" ;

     

    protected void btnEncrypt_Click(object sender, EventArgs e)

    {

    try

    {

        Configuration confg = WebConfigurationManager .OpenWebConfiguration(Request.ApplicationPath);

        ConfigurationSection confStrSect = confg.GetSection(section);

        if (confStrSect != null )

        {

            confStrSect.SectionInformation.ProtectSection(provider);

            confg.Save();

        }

        // the encrypted section is automatically decrypted!!

        Response.Write("Configuration Section " + "<b>" +

            WebConfigurationManager .ConnectionStrings["MyConnString" ].ConnectionString + "</b>" + " is automatically decrypted" );

    }

    catch (Exception ex)

    {

       

    }       

    }

     

    protected void btnDecrypt_Click(object sender, EventArgs e)

    {

    try

    {

        Configuration confg = WebConfigurationManager .OpenWebConfiguration(Request.ApplicationPath);

        ConfigurationSection confStrSect = confg.GetSection(section);

        if (confStrSect != null && confStrSect.SectionInformation.IsProtected)

        {

            confStrSect.SectionInformation.UnprotectSection();

            confg.Save();

        }

     

    }

    catch (Exception ex)

    {

     

    }

    }

    但是黑客还是可以解密已经加密的数据库连接, 攻击我的网站。

    请问,有办法可以解决么?

    2011年3月4日 22:26

答案

  • 你的问题我个人估计跟连接字符串没多大关系,如果用户通过其它渠道进入了你的服务器,在服务器上,直接用本机管理员帐号就能登录数据库(SqlServer本身就有二种连接方式,一种是本机帐号,另一种才是连接字符中的用户名和密码)

    可以按以下几个方面来检查一下:

    1.服务器上是否有多个站点,如果有多个,就算你自己的站点能保证代码安全,但是其它站点并不一定就安全,常见的“旁注”攻击就是利用其它站点的漏洞入侵的。

    2.服务器上有无其它可能有安全隐患的软件,比如serv-U的低版本就可以利用执行权限,提升权限,最终得到管理员权限。

    3.sqlserver的低版本,比如sql 2000,默认用sa密码连接上去以后,通过调用exec xp_cmdshell 是可以直接执行dos命令的(甚至可以创建新管理员帐号)

    4.服务器管理帐号或密码是否有多人知道,是否定期更改

    5.防火墙、杀毒软件等这些必要的东西有没有安装或正确配置.

     

    2011年3月6日 11:06
  • 我想用WCF应该会比较完全,只暴露接口而已~


    Alan Chen[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年3月9日 9:22

全部回复

  • 你好

    可不可以說說大概 是怎樣被攻擊了嗎?

    你的SERVER是不是已經安全了最新的UPDATE?

    會不會是使用SQL INJECTION 來取到你的DATABASE資料?

    你有沒有用HTTPS 加密你的CONNECTION SESSION?

     


    Chi
    2011年3月5日 3:23
  • Hi ChiYau,

    这是我的connectionString,

    < connectionStrings >
      < add name = "NorthwindConnectionString " connectionString = "Data Source=myDB;Initial Catalog=Northwind;User ID=sa "
       providerName = "System.Data.SqlClient " />
      </ connectionStrings >

    然后我用上面的代码加密connectionString,就变成;

    < connectionStrings configProtectionProvider = "RsaProtectedConfigurationProvider ">
      < EncryptedData Type = "http://www.w3.org/2001/04/xmlenc#Element "
       xmlns = "http://www.w3.org/2001/04/xmlenc# ">
       < EncryptionMethod Algorithm = "http://www.w3.org/2001/04/xmlenc#tripledes-cbc " />
       < KeyInfo xmlns = "http://www.w3.org/2000/09/xmldsig# ">
        < EncryptedKey xmlns = "http://www.w3.org/2001/04/xmlenc# ">
         < EncryptionMethod Algorithm = "http://www.w3.org/2001/04/xmlenc#rsa-1_5 " />
         < KeyInfo xmlns = "http://www.w3.org/2000/09/xmldsig# ">
          < KeyName > Rsa Key</ KeyName >
         </ KeyInfo >
         < CipherData >
          < CipherValue > NQPKYTuUVO5SWpxXdBUpoMKYYUmEBBuAw8LXe+DxMYrkMzzAJsUVw6uZZLJXWa9ipAEx hvS2hhkGx7MHkpustn+IT+PpuxtIKSDFkumZdA/3kcaHuSO74M75Qt+BmW42v/KWNwVv 7umXLz78ka4jDeY/yf2BMpkcs35TkSS9PVM=</ CipherValue >
         </ CipherData >
        </ EncryptedKey >
       </ KeyInfo >
       < CipherData >
        < CipherValue > MVKe6xdu6h4DqGHmzuzeBqaWcL+m+Rl0EHi9uwQAqhZ9N56HzGgC66cXEiDJ8IGaSCrAYm 7z2ERQYKwjMyTJMkiJ3cSk7CSgqxfrT3+7+DzzKMkB489AmADfxtRyt3JE0bWIclhsHgLn YthS6mMiXTusSzRIcPMESb+ZAIkyCTPt6+2BxDNimgFX42Xt7abvNinknaUk
    uJYKr7tgOzVfS00IesVA/jou1t8FTjM14b9YGvHPtBDq00Jm/cD9iGtP2OM6RnhLgy+MUr 3NPiuWutsEcUGELfOwkMvKQ6Igsg6eqae4c0dZlg==</ CipherValue >
       </ CipherData >
      </ EncryptedData >

     </ connectionStrings >

    但是黑客还是可以把加密的 connectionString解密,拿到我的数据库名称,地址,用户名和密码直接进入我的数据库加入一些script.

    所以,应该不是SQL INJECTION的问题。我也在考虑SERVER是否安全。对于你说的HTTPS 加密你的CONNECTION SESSION,可以具体些么?

     

    谢谢

    2011年3月5日 9:31
  • 如果黑客进入到服务器,加密也是没有任何作用的,另外,别人还可反编译你的.dll代码看解密方法。

    另外,SQL 注入跟数据库连接没有关系的,

    网站漏洞是多方面的,不只是数据库方面出现问题,如上载程序,系统漏洞等


    【孟子E章】
    2011年3月6日 1:22
    版主
  • 你的问题我个人估计跟连接字符串没多大关系,如果用户通过其它渠道进入了你的服务器,在服务器上,直接用本机管理员帐号就能登录数据库(SqlServer本身就有二种连接方式,一种是本机帐号,另一种才是连接字符中的用户名和密码)

    可以按以下几个方面来检查一下:

    1.服务器上是否有多个站点,如果有多个,就算你自己的站点能保证代码安全,但是其它站点并不一定就安全,常见的“旁注”攻击就是利用其它站点的漏洞入侵的。

    2.服务器上有无其它可能有安全隐患的软件,比如serv-U的低版本就可以利用执行权限,提升权限,最终得到管理员权限。

    3.sqlserver的低版本,比如sql 2000,默认用sa密码连接上去以后,通过调用exec xp_cmdshell 是可以直接执行dos命令的(甚至可以创建新管理员帐号)

    4.服务器管理帐号或密码是否有多人知道,是否定期更改

    5.防火墙、杀毒软件等这些必要的东西有没有安装或正确配置.

     

    2011年3月6日 11:06
  • 多谢!杨大侠,

     

    1。我用的是共享的服务器,所以有很多其他的Applications在共用这个服务器.

    3。对于服务器本身是否100%安全,我也不是很确定。

    你觉得对于我这种情况,还是解决方法么?

     

     

    2011年3月8日 21:52
  • 我想用WCF应该会比较完全,只暴露接口而已~


    Alan Chen[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年3月9日 9:22