zoukankan      html  css  js  c++  java
  • Web.Config数据库连接串加密和解密(转载)

    旧版本的ASP.NET将连接字符串直接保存在ASPX页面中。回想一下,连接字符串包含了数据服务器名称和用户账户等信息,有时候甚至还包含了密码。在代码中包含以上信息是非常不好的习惯,原因有二。首先,这些信息可以被设计小组中的每一位程序人员看到(但是站点访问者不能在浏览器上看到)。第二,在整个Web站点中的每一个拥有该连接的地方,都必须进行维护和更新。更新密码成为了一项繁重的工作。

    ASP.NET 2.0提供了一个选项可以将连接字符串移动至Web.config文件的连接区域,给字符串一个名称并将其加密。然后ASP.NET 2.0页面就通过这个名称来引用连接字符串。保存连接字符串至Web.config的步骤并不复杂。打开位于站点根目录下的Web.config文件。找到被<connectionString>界定的区域(如果不存在,可自行添加)并在<Add>标记中输入如下代码。该标记有三个属性:name、connectionString和providerName。属性name就是将会在页面中使用的连接字符串的普通名称。connectionString属性应当设置为连接至数据库的完整的连接字符串,如前所述。

    e.g.

    <?xml version="1.0"?>
    <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
    <connectionStrings>
    <add name="SQLProfileConnString" connectionString="server=FOX;database=MSPetShop4Profile;user id=mspetshop;password=pass@word1;min pool size=4;max pool size=4;"
       providerName="System.Data.SqlClient" />
    <add name="SQLMembershipConnString" connectionString="server=FOX;database=MSPetShop4Services;user id=mspetshop;password=pass@word1;min pool size=4;max pool size=4;"
       providerName="System.Data.SqlClient" />
    <add name="SQLConnString1" connectionString="server=FOX;database=MSPetShop4;user id=mspetshop;password=pass@word1;min pool size=4;max pool size=4;"
       providerName="System.Data.SqlClient" />
    <add name="SQLConnString2" connectionString="server=FOX;database=MSPetShop4;user id=mspetshop;password=pass@word1;max pool size=4;min pool size=4;"
       providerName="System.Data.SqlClient" />
    <add name="SQLConnString3" connectionString="server=FOX;database=MSPetShop4Orders;user id=mspetshop;password=pass@word1;min pool size=4;max pool size=4;"
       providerName="System.Data.SqlClient" />
    <add name="OraProfileConnString" connectionString="" providerName="System.Data.OracleClient" />
    <add name="OraMembershipConnString" connectionString="" providerName="System.Data.OracleClient" />
    <add name="OraConnString1" connectionString="" providerName="System.Data.OracleClient" />
    <add name="OraConnString2" connectionString="" providerName="System.Data.OracleClient" />
    <add name="OraConnString3" connectionString="" providerName="System.Data.OracleClient" />
    </connectionStrings>
    <appSettings>
       <!-- Pet Shop DAL configuration settings. Possible values: PetShop.SQLServerDAL for SqlServer, PetShop.OracleServerDALfor Oracle. -->
    </appSettings>
    </configuration>

    通过使用命令,可以将Web.config文件的连接字符串区域加密。当ASPX页面请求连接字符串时,将由ASP.NET自动对信息进行解密。加密必须由以下命令行来执行。依次单击Start/Run/cmd并切换至C:\WINDOWS\ Microsoft.net\ Framework\ v2.0.xxxx,其中xxxx是您的软件版本。如果C:\Websites\BegAspNet2Db是站点根目录的话,即可输入如下命令行:

    aspnet_regiis –pef connectionStrings C:\Websites\BegAspNet2Db

    加密连接字符串的命令行工具还可以使用虚拟路径语法(在IIS元数据库中的路径),而无需指定Web.config文件的完全限定路径,如下所示:

    aspnet_regiis –pe connectionStrings –app /BegAspNet2Db

    一旦执行完了加密过程,就可以打开Web.config文件,但是连接字符串已经被混淆。当ASP.NET需要,连接字符串即可自动解密,或者如果需要进行一些更改,例如修改密码,则可以手动输入以下代码来解密。

    aspnet_regiis –pdf connectionStrings c:\Websites\BegAspNet2Db

    请注意,在默认情况下,加密过程使用了一个基于加密算法执行的机器的键。解密过程(无论手动还是在处理页面过程中)必须发生在与加密相同的机器上。例如,作为XCOPY部署的一部分,移动Web.config至另外一台机器将会导致Web.config无法解密,所以推荐在部署Web站点至最终机器之后,再将连接字符串进行加密。

    PS:petshop4.0安装的时候如果选择 “Full Install”,那么配置文件默认就加密了,这也是我一开始怎么也找不到连接字符串,然后用windows集成验证怎么也登不上去的原因。

    后来发现在安装目录下有两个批处理文件:

    1、加密EncryptWebConfig.bat

    @echo off
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef "connectionStrings" "D:\Program Files\Microsoft\.NET Pet Shop 4.0\Web"
    PAUSE

    2、解密DecryptWebConfig.bat

    @echo off
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pdf "connectionStrings" "D:\Program Files\Microsoft\.NET Pet Shop 4.0\Web"
    PAUSE

    加黑的就是两个文件的区别。

    转自:http://hi.baidu.com/ilovehaley/blog/item/4f7d2cfde5a8cf1d08244de4.html

    开始--->运行,输入cmd,接着输入以下内容

    加密:

    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef "connectionStrings" "你的Web项目路径"

    解密:

    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pdf "connectionStrings" "你的Web项目路径"

    .NET为版本的路径自行修改,其中connectionStrings连接字符串的名称。

    1.在Dos命令窗口中执行命令:

    C:Documents and SettingsAdministrator>C:WINDOWS\Microsoft.NET\Frameworkv2.0.50727\aspnet_regiis -pef "connectionStrings" "E:\sjzb\WebSite1"
    2.命令成功完成以后会在C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys 中生成一个密钥文件.该文件在不同的机器上是不一样的.在该文件上点右键,选属性,在安全属性页上,将NETWORK_SERVICE组添加进去,给读取权限.

    3.如果连接字符串中的用户名和口令需要修改,则用下面的命令将webconfig文件解密.然后重复上面的加密步骤即可

    C:Documents and SettingsAdministrator>C:WINDOWS\Microsoft.NET\Frameworkv2.0.50727\aspnet_regiis -pdf "connectionStrings" "E:\sjzb\WebSite1"

    转自:http://blog.csdn.net/scugoer/archive/2007/04/24/1579942.aspx

  • 相关阅读:
    欧拉公式
    isap的一些想法
    错误合集
    Hello World
    PAT (Advanced Level) Practice 1068 Find More Coins
    PAT (Advanced Level) 1087 All Roads Lead to Rome
    PAT (Advanced Level) 1075 PAT Judge
    PAT (Advanced Level) 1067 Sort with Swap(0, i)
    PAT (Advanced Level) 1017 Queueing at Bank
    PAT (Advanced Level) 1025 PAT Ranking
  • 原文地址:https://www.cnblogs.com/johnwonder/p/1705644.html
Copyright © 2011-2022 走看看