webconfig中数据库配置加密_webconfig 数据库连接 加密 - CSDN
精华内容
参与话题
  • web.config中配置数据库连接的两种方式

    万次阅读 多人点赞 2016-10-27 10:07:12
    在网站开发数据库操作是经常要用到的操作,ASP.NET一般做法是在web.config中配置数据库连接代码,然后在程序调用数据库连接代码,这样做的好处就是当数据库连接代码需要改变的时候,我们只要修改web.config...

    在网站开发中,数据库操作是经常要用到的操作,ASP.NET中一般做法是在web.config中配置数据库连接代码,然后在程序中调用数据库连接代码,这样做的好处就是当数据库连接代码需要改变的时候,我们只要修改web.config中的数据库连接代码即可,而不必在修改每一个页面中的数据库连接代码。

    在ASP.NET中有两种配置数据库连接代码的方式,它们分别是 appSettings 和 connectionStrings 。在使用 appSettings 和 connectionStrings 配置数据库连接代码时,可分别在 <configuration> 下添加如下代码:

    1. appSettings

    <appSettings>
    <add key="conn" value="server=服务器名;database=数据库名;uid=用户名;password=密码;"/>
    </appSettings>

    2. connectionStrings

    <connectionStrings>
    <add name="conn" connectionString="server=服务器名;database=数据库名;uid=用户名;password=密码" providerName="System.Data.SqlClient" />
    </connectionStrings>

    appSettings 和 connectionStrings 的区别:(摘自http://www.cnblogs.com/kerry1986/archive/2009/07/08/1518895.html

    (1) appSettings 是在 2003 中常用的,connectionStrings 是在 2005 中常用的;

    (2) 使用 connectionStrings 的好处:

    第一,可将连接字符串加密,使用MS的一个加密工具即可;

    第二,可直接绑定数据源控件,而不必写代码读出来再赋值给控件;

    第三,可方便的更换数据库平台,如换为 Oracle 数据库,只需要修改 providerName。

    (3) 写在 appSettings 中用 System.Configuration.ConfigurationManager.AppSettings["keyname"] 获取数据库连接代码值;写在 connectionStrings 中用 System.Configuration.ConfigurationManager.ConnectionStrings["name"] 获取数据库连接代码值。


    转载:http://www.cnblogs.com/sunzhiyue/archive/2011/06/07/2074696.html


     一个很简单的webconfig.xml内配置数据库连接,这也是在网上转载的。自己在做了些笔记。欢迎小学生来关顾,大神就直接忽略吧。

      webconfig.xml的配置内容如下:

      <configuration>

      <connectionStrings>

      <add name="ApplicationServices"

      connectionString="data source=.SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"

      providerName="System.Data.SqlClient" />

      <add name="TESR_DB" connectionString="user id=sa;Data Source=127.1.1.1;password=12345678;Persist Security Info=True;" providerName="System.Data.SqlClient" />

      </connectionStrings>

      ……

      </configuration>

      Persist Security Info=True;的意识是:是否保密信息,DO在数据库连接成功后是否保存密码信息。True表示保存,False表示不保存。

      主要是name="TESR_DB",会被后台对应的ConfigurationManager.ConnectionStrings取到

      以上的是SQL SEVER的,Oracle的是<add name="TESR_DB" connectionString="DATA SOURCE=127.1.1.1;PASSWORD=12345678;USER ID=sa" providerName="Oracle.DataAccess.Client" />

      测试是否连接代码:

      (在后台要引用webconfig.xml的配置信息,需要引入 using System.Configuration;库,才可调用到webconfig.xml的配置信息)

      string myvar1 = ConfigurationManager.ConnectionStrings["TESR_DB"].ToString();

      SqlConnection conn = new SqlConnection(myvar1);

      try

      {

      conn.Open();

      Response.Write("连接成功");

      }

      catch (Exception ex)

      {

      Response.Write("连接失败");

      }

      这里和显然的告诉大家,或许都已经注意到了name="TESR_DB"在后台是被 ConfigurationManager.ConnectionStrings["TESR_DB"].ToString();是一致的。一个项目对应多个数据库什么的或者其他信息,就是利用不同的name来设置。

    转载:http://www.3lian.com/edu/2014/05-13/147244.html


    C#连接SQL Server数据库代码解析

    连接字符串:

    <connectionStrings>

      <add name="conn" connectionString="user id=sa;Password=;initial catalog=Northwind;Server=YourSQLServer;Connect Timeout=30;" providerName="System.Data.SqlClient" />

    </connectionStrings>

    --------------------------------------------------------------------------------

    参数介绍(注意:参数间用分号分隔):

    "user id=sa":连接数据库的验证用户名为sa.他还有一个别名"uid",所以这句我们还可以写成"uid=sa".

    "password=":连接数据库的验证密码为空.他的别名为"pwd",所以我们可以写为"pwd=".

    这里注意,你的SQL Server必须已经设置了需要用户名和密码来登录,否则不能用这样的方式来登录.如果你的SQL Server设置为Windows登录,那么在这里就不需要使用"user id"和"password"这样的方式来登录,而需要使用"Trusted_Connection=SSPI"来进行登录.

    "initial catalog=Northwind":使用的数据源为"Northwind"这个数据库.他的别名为"Database",本句可以写成"Database=Northwind".

    "Server=YourSQLServer":使用名为"YourSQLServer"的服务器.他的别名为"Data Source","Address","Addr".如果使用的是本地数据库且定义了实例名,则可以写为"Server=(local)\实例名";如果是远程服务器,则将"(local)"替换为远程服务器的名称或IP地址.

    "Connect Timeout=30":连接超时时间为30秒.

    注:以上User ID,Password可以大写也可以小写,与大小写无关


    展开全文
  • 如何对web.config进行加密和解密

    万次阅读 2011-06-05 23:09:00
    更好的解决方法是将数据库连接字符串写入到web.config配置文件,可问题是将连接字符串写入到web.config文件之后,任何人都能打开看到所连接的数据库名和密码,又会带来安全隐患,因此为了保证数据

        在WEB网站开发过程中,如果我们将数据库连接字符串封装到.DLL文件中,将会给数据库和程序的迁移带来麻烦,因为万一服务器地址或者数据库发生变更,那么我们就不得不修改源程序并重新将其编译。更好的解决方法是将数据库连接字符串写入到web.config配置文件中,可问题是将连接字符串写入到web.config文件中之后,任何人都能打开看到所连接的数据库名和密码,又会带来安全隐患,因此为了保证数据库的安全性,我们可以通过使用微软IDE自带的命令aspnet_regiis.exe将配置文件web.config中指定的标签进行加密,如果以后想查看加密后的连接字符串,我们还可以使用aspnet_regiis.exe将加密后的字符串进行解密。


    1.    加密通用语法
      加密一个特定网站的web.config文件的通用形式
      aspnet_regiis.exe -pef secion physical_directory -prov provider
      或
      aspnet_regiis.exe -pe secion -app virtual_directory -prov provider
      其中,各个参数的含义如下:

    •      section表示要加密的配置节
    •      physical_directory用于指定站点的物理路径。
    •      virtual_directory用户指定虚拟路径。
    •      provider指定加密提供程序。

        加密一个特定站点的连接字符串就是:
        aspnet_regiis.exe -pef "connectionStrings" "你的web项目路径" -prov "DataProtectionConfigurationProvider"
        其中DataProctionConfiguartionProvider是Windows数据保护API(DPAPI)提供程序,它使用Windows内置的密码学技术来加解密配置节。默认情况下,这个提供程序使用本机的密钥。


    2.    加密方法

     

      运行Visual Studio 2008命令提示


       

      加密后的结果

    3.    解密
       解密该连接字符串也很简单
       aspnet_regiis.exe -pdf "connectionStrings" '你的web项目路径"

       解密后的结果:


    4.    后台代码读取配置文件web.config中数据库连接字符串的方法:


       运行效果图:


    5.    在连接字符串的加密和解密的过程中,需要注意一下几点。

    •      使用加密的连接字符串

        使用加密的连接字符串不需要编码解密,ASP.NET会自动对加密内容进行解密。

    •      加密和解密在同一台计算机上使用

        在加密过程中,使用了一个基于本机的密钥。这就意味着加密和解密必须在同一台计算机上进行,否则将不能解密。同时,在一台计算机上加密的配置,在另一台计算机上将不能正常使用。

    •      中文路径问题

        该命令对中文支持不是很好。如果站点的路径中有中文字符,也许不能正常加解密。


    展开全文
  • 近日正在看Asp.net,看到Web.config有很不清楚之...在ASP.NET的web.config,可以用两种方式来写连接字符串的配置。 configuration> appSettings> add key="connstr1" value="Data Source=.;Initial Catalog=DB

    近日正在看Asp.net,看到Web.config有很不清楚之处,特意从网络、MSDN搜集、归纳和整理,供大家分享。

    在ASP.NET的web.config中,可以用两种方式来写连接字符串的配置。

    <configuration>
       <appSettings>
          <add key="connstr1" value="Data Source=.;Initial Catalog=DBName;Integrated Security=true"/>
          <add key="connstr2" value=".........">
       </appSettings>
       <connectionStrings>
          <add name="connstr3" connectionString="........" />
          <add name="connstr4" connectionString="......" providerName="System.Data.Sqlclient"
       </connectionStrings>
    </configuration>

    如上代码所示:两种方式为appSettings和connectionStrings

    appSettings:

             ①它是asp.net1.1的时候用的,在vs2003中用的

             ②里面存的相当于键值对的形式,key和value。不仅仅可以存连接字符串,还可以存储一些配置项。其中value中包括数据库服务器地址、用户名和密码、数据库名称等信息。

             ③在appSettings中,不能使用ProviderName="System.Data......."(不过如果你要用也可以,只要写在value里面就可以了,当成值传递过去)

             ④在后台取值方式用代码:

         string conn=System.Configuration.ConfigurationManager.AppSettings["connstr";]

    connectionStrings:

             ①它是asp.net2.0中新增的。

             ②里面存的也类似于键值对的形式,使用的是name和connectionString,一般就存连接字符串。

             ③在connectionStrings中可以,可以使用providerName.

             ④在后台代码,取值的方式:

         string conn=System.Configuration.ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
    
    
    其它说明:
    	Initial Catalog=Database就是数据库名称,根据从网络上搜集到的信息看,两者好像可以完全通用,基本没有区别。
    
         	Integrated Security集成安全选项设置,可识别的值为 true、false、yes、no以及与true等效的sspi。当为 false 时,将在连接中指定用户ID和密码。当为true时,将使用当前的Windows 帐户凭据进行身份验证。其中SSPI为Security Supoort Provider Interface即安全支持提供者接口,Microsoft安全支持提供器接口(SSPI)是定义得较全面的公用API,用来获得验证、信息完整性、信息隐私等集成安全服务,以及用于所有分布式应用程序协议的安全方面的服务。应用程序协议设计者能够利用该接口获得不同的安全性服务而不必修改协议本身。SQL Server 数据库连接字符串中,Integrated Security=SSPI 表示使用 Windows 身份验证,即使用运行当前应用程序的用户来连接 SQL Server,对网页来说,一般是 IIS 中的匿名用户。    

    既然connectionStrings是2.0版本出来的,那它肯定比appsettings有好处了

    网上如是说:

             ① 可将连接字符串加密,使用MS的一个加密工具即可。 
             ② 可直接邦定的数据源控件,而不必写代码读出来再赋值给控件。 
             ③ 可方便的更换数据库平台,如换为Oracle数据库,只需修改providerName

    providerName它的作用是什么呢?

    我们先看一下providerName的参数值。

    ①providerName="System.Data.SqlClient"  ----说明使用的是MSSQLServer数据库
    ②providerName="System.Data.SqlLite"  ----说明使用的是SQLLite数据库
    ③providerName="System.Data.OracleClient"  ----说明使用的是Oracle数据库
    或providerName="System.Data.Oracle.DataAccess.Client"  ----同上
    ④providerName="System.Data.OleDb"   ----说明使用的是Access数据库

    providerName可写可不写。

    我们什么时候用providerName呢?

    比如,我们现在要做一个项目,以后会卖个两个企业使用:A和B。这就有不确定因素了,A使用Oracle,B使用SQLserver。

    所以,

          ①数据库:我们需要建两个库,一个用oracle,一个用Sqlserver。

          ②程序:我们一般不去写两个系统让他们使用,我们肯定会去判断,先判断他们使用的是什么数据库,然后再在程序里执行什么样的数据库脚本。

          ③web.config代码:

    <configuration>
      <connectionStrings>
        <add name="connStr" connectionString="Data Source=.;Initial Catalog=mydb;Integrated Security=true" providerName="System.Data.SqlClient"/>
      </connectionStrings>
    </configuration>
          ④程序代码:进行判断,如果providerName="System.Data.SqlClient"则执行SQLServer的脚本,如果providerName="System.Data.OracleClient"则调用Oracle的数据库脚本。
    
    
    public static readonly string connStr = System.Configuration.ConfigurationManager.ConnectionStrings["connStr"].ProviderName;
    public static string databaseType = System.Configuration.ConfigurationManager.ConnectionStrings["connStr"].ProviderName;
    public static int ExecuteNonQuery(CommandType commandType, string commandText, params System.Data.OleDb.OleDbParameter[] parm)
    {
        int num = 0;
        if (databaseType == "System.Data.SqlClient")
        {
            //此处执行Microsoft SQLServer的数据库脚本
        }
        else if (databaseType == "System.Data.OracleClient")
        {
            //此处执行Oracle的数据库脚本
        }
    
        return num;
    }
    
    
    
    
    常见的数据库连接代码(C#):
    
    
    SqlConnection conn = new SqlConnection( “Server=(local);Integrated Security=SSPI;database=Pubs“);
    SqlConnection conn = new SqlConnection(“server=(local)\NetSDK;database=pubs;Integrated Security=SSPI“);
    SqlConnection conn = new SqlConnection(“Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;“);
    SqlConnection conn = new SqlConnection(“ data source=(local);initial catalog=xr;integrated security=SSPI;
    persist security info=False;workstation id=XURUI;packet size=4096; “);
    
    SqlConnection myConn  = new System.Data.SqlClient.SqlConnection(“Persist Security Info=False;Integrated
    Security=SSPI;database=northwind;server=mySQLServer“);
    
    SqlConnection conn = new SqlConnection( “ uid=sa;pwd=passwords;initial catalog=pubs;data source=127.0.0.1;Connect Timeout=900“); 
    
    

    相关:web.config配置文件详解

    关于asp.net网站管理工具安全选项无法连接到Sql server数据库

    展开全文
  • Web.config 加密及解密

    千次阅读 2015-09-01 22:04:48
    Web应用通常使用web.config存储数据库连接信息及应用的一些基础配置信息。为了安全性,我们采用一些加密手段来加密一些敏感信息,比如数据库连接字符串。 .NET 自带了一个aspnet_regiis的程序,可以帮助我们实现对...

    Web应用通常使用web.config存储数据库连接信息及应用的一些基础配置信息。为了安全性,我们采用一些加密手段来加密一些敏感信息,比如数据库连接字符串。

    .NET 自带了一个aspnet_regiis的程序,可以帮助我们实现对web.config的加密和解密。

    1.加密

    1)导航到aspnet_regiis.exe目录下

    cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319

    2)加密

    C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis.exe -pef "connectionStrings" "D:\publish"
    Microsoft (R) ASP.NET RegIIS 版本 4.0.30319.33440
    用于在本地计算机上安装和卸载 ASP.NET 的管理实用工具。
    版权所有(C) Microsoft Corporation。保留所有权利。
    正在加密配置节...
    成功!

    -pef 代表加密,connectionStrings代表的是要加密的配置节,D:\publish代表要加密的web.config所在的目录

    加密之后的connectionStrings:

    <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>FeMnXLCJptn7uRq2ZMRLRd7X2j/1sZeT99WypfKFlp2+FXe8jCUJCXlf86t/Q9R3CtnaspGiprqIMwwshZHAKo+E+6rhzlhGyLrizqLNY9kfol/ncbC+jkbX72eu6sZSE42dmsN388amxh75WS9Z/stHdg91I5Nfi6LmQUKFSfmrljEULYeyGMyKsW487jFkTvRcyApZawVlSb941hx6cfbxhlmjrIaTDKOXyiKFptiV8Qs7GsgvRL4L2wbKRUqp7k3po82l/ovVqmjv39SuMOv+ZdwCUi4ZAoQUvluX3VeIF+K2S8VK61v4sGZvCHqRZO72mQsgk/SovIRYGsxQ/Q==</CipherValue>
              </CipherData>
            </EncryptedKey>
          </KeyInfo>
          <CipherData>
            <CipherValue>mYKo+/TqmqRumdDTN3+zWgi+wXbBnKMowc77uE/IF2/f9ZcyjHuRRJtmIu1t/kFtX4zYON/EFf8yigDGVk4QpNblMUPTMU1CV0v8KHLvb08iZetf0ZIWpA3LB3so2npKUTl4LcXzIIIjuLhYLfxvuEJJdg0WuYyw4Yqxwn5NwuierX26gl73LCxdKUT3LMAX+OgWW2j4evhJ5YhvCLe5I8yo8xrGrpkAvUMf8YYGxWfAqyVQPklG20lFvZ0tMzGJ</CipherValue>
          </CipherData>
        </EncryptedData>
      </connectionStrings>
    加密前的连接字符串:
    <connectionStrings>
        <add name="sqlConnStr" connectionString="server=localhost;database=HibernateDB;uid=sa;pwd=1234"
          providerName="System.Data.SqlClient" />
      </connectionStrings>
    2.解密

    有加密自然有解密,解密其实非常简单,使用如下命令即可:

    C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis.exe -pdf "connectionStrings" "D:\publish"
    Microsoft (R) ASP.NET RegIIS 版本 4.0.30319.33440
    用于在本地计算机上安装和卸载 ASP.NET 的管理实用工具。
    版权所有(C) Microsoft Corporation。保留所有权利。
    正在解密配置节...
    成功!

    说明:

    1)加密后无需修改代码IIS可以直接读取配置信息。

    2)从其他已加密的文件里拷贝加密字符替换未加密文件的配置节,IIS将无法正确读取配置信息。

    3)aspnet_regiis.exe在使用前先确保iis已安装,并且aspnet_regiis已安装

    4)确保cmd是以系统管理员身份启动,否则执行效果如下:

    C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis.exe -pef "connectionStrings" "D:\publish"
    Microsoft (R) ASP.NET RegIIS 版本 4.0.30319.33440
    用于在本地计算机上安装和卸载 ASP.NET 的管理实用工具。
    版权所有(C) Microsoft Corporation。保留所有权利。
    正在加密配置节...
    执行 connectionStrings 的配置节处理程序时出错。
    
    未能使用提供程序“RsaProtectedConfigurationProvider”加密节“connectionStrings”。提供程序返回错误消息: 对象已存在。
    
    失败!
    








    展开全文
  • 如果数据库连接字符串明文写在web.config,将是相当危险的事情。    在命令提示符总进入到 C:\WINDOWS\Microsoft.net\Framework\ v4.0.xxxx,其中xxxx是您的软件版本。路径为web.config所在目录。   加密:...
  • web.config配置连接字符串的方法

    千次阅读 2017-03-21 22:14:21
    代码如下:              <add name="connstr4" connectionString="......" providerName="System.Data.Sqlclient"
  • 【案例引用】 例如 XML/HTML code ? 1 2 3 ... add name="EnterpriseWebConnectionString" connectionString="Data Source=.... Initial Catalog=Enterp
  • 加密配置节的信息

    千次阅读 2006-02-26 19:48:00
    通常在应用asp.net程序的时候,会将连接数据库的的ConnectionString信息放到WebConfig.xml文件,但是连接字符串的用户名和密码不就暴露了吗其实可以用aspnet_regiis来加密和解密ConnectionString信息比如加密的...
  • 在web.config中配置数据库连接字符串

    千次阅读 2013-08-09 13:47:31
    1.在web.config中配置连接字符串   ID=sy2010;Password=123456" providerName="System.Data.SqlClient"/> 2.在文件代码添加对连接字符串的引用 (1)首先要导入System.Web.Configuration 即using System...
  •  [加密] 在命令窗口输入 C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -pef "connectionStrings" "E:\WANGZHAOWU\ENKJ_OA"  然后确定即可完成对web.config的加密。  
  • C# Web.Config 加密与解密

    千次阅读 2017-05-02 15:43:25
    用后台编码的形式对web.config数据库连接字符串或者某个节点进行加密 这里提供俩种方式: DataProtectionConfigurationProvider和RSAProtectedConfigurationProvider 编码形式 新建一个空网站添加Web窗体页面...
  • 关于这个问题,在网上找到的资料很少,ye
  • 1.属性值一个 MembershipPasswordFormat 值,表示用于在 SQL Server 数据库中存储密码的格式。 2.备注 SQL Server 成员资格提供程序支持 Clear、Encrypted 和 Hashed 密码格式。Clear 密码以明文形式存储,可提高...
  • DataProtectionConfigurationProviderweb.config 文件经常会包含一些敏感信息,最常见的就是数据库连接字符串了,为了防止该信息泄漏,最好是将相关内容加密。Aspnet_regiis.exe命令已经提供了加密配置文件的方法...
  • 在网站开发数据库操作是经常要用到的操作,ASP.NET一般做法是在web.config中配置数据库连接代码,然后在程序调用数据库连接代码,这样做的好处就是当数据库连接代码需要改变的时候,我们只要修改web.config...
  • 加密web.config的appSettings节点和connectionStrings节点  新建Default.aspx;Page_Load事件如下  protected void Page_Load(object sender, EventArgs e)  {  Configuration config = WebCon
  • 在网站开发数据库操作是经常要用到的操作,ASP.NET一般做法是在web.config中配置数据库连接代码,然后在程序调用数据库连接代码,这样做的好处就是当数据库连接代码需要改变的时候,我们只要修改web.config...
1 2 3 4 5 ... 20
收藏数 895
精华内容 358
关键字:

webconfig中数据库配置加密