对web.config信息加密方法

Web.config文件的某些节点包含了敏感信息,比如:connection strings, user names, passwords,server names, encryption keys等等。在下面的这些节点找到这些信息:

<connectionStrings>
<add name=”bonzerDemo” connectionString=”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program
Files\bonzer\database\Northwind_zh.mdb” providerName=”System.Data.OleDb”/>
</connectionStrings>

这里面包含了数据库的类型、资源地址、用户名和密码。如果一方面要对这里面的信息进行加密,另一方面又不影响报表的正常浏览要如何做呢?

这里提供一种简单易行的方法,利用ASP.NET IIS Registration工具来进行加密:

首先,由命令行进入到cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727中,调用里面的aspnet_regiis.exe来进行加密,例如:

aspnet_regiis.exe -pef “connectionStrings” “C:\Program Files\bonzer\webroot” -prov ”
DataProtectionConfigurationProvider”

这个命令的意思就是对博计应用下的web.config中的connectionStrings节点进行加密。

然后,回车可得到下面的结果:

Encrypting configuration section…
Succeeded!

表明加密已经完成,这时打开web.config文件可以看到原来的connectionStrings中的内容变成了:

<connectionStrings configProtectionProvider=”DataProtectionConfigurationProvider”>
<EncryptedData>
<CipherData> <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAAss6oQVulkyVt2T7RMfq3AQAAAACAAAAAAADZgAAqAAAABAAAAAuM4XG4E8hjoviWtAwhzg8AAAAAASAAACgAAAAEAAAALqs72wBAAeZoKErfJUSvaNIAwAAcKbWWhqkff6KzYfiU8JzkvBzTuUUAyCjf0lGbwgZ4kJ5+dKCNYp4fhDOtvGCBsBXVLGOKFLA2i+ePfCMlCgT79Wxvgce4keoL9s6nf7Y+MvWYVyr7vrXY4+Yn9NPWkVy12aomPw3RI3F/4gUzksNnf2VXaYMoEkxl9dQkRFkQo5V6p8vpRQqGuclBjvpmJq6mNdvLidIABYWezwiYRh5Ta8p3J8k9eC8N/f//u3/nRhI77Q23+ZeOniKZ8jdqxMStOgEHjnNJZwludUyxP9eJXAXf1k0i7x/pFR8AJMDSzjJDw8E5zDqmDQOoD5cm79ZTp+/ySxgIy4wGOijTVgSN0kObj8FHxqU9QeQ9uiLIGOBW5WmLjggu6v/rfNuqCkfBkRDHWov6M3rovoxGezRMqmmbcF7ZU7T83Ugd/7VFmUnSaotojrFmkybnemDnkmZrfN06BE3rJV2ebYUicRr6C7WubZgbenWTPEC7+0atGAPPD4tOJ3j57Xag1AuKsfoWIrriyoRyINnvlTGeQRq3+/0rWpbN4EM2Yit5l2Wnc8ZmucMnWH2L8qPIcWFzf/qUeszqqPUJW7KVbq4dgMYUmAJsvENKSaA18VrPnNeACZNAOTndbGgPXtC7e/wZUpEC02wvEzPlsv3qWUSwO4DxOUh8ssn5CsxHayY/h/t1erqQv8L8xd8EDXrr9d8LMa4wKXKz5bVUu8bXwgRzkKJ0pOIMifujuKO336GAKaQ1df3kutd/QrQVpHvYg6nnGnEry1+FCj25VZcfSLPFI9MXEjvqCztXbOJ3EGSr/vf7VLYLGo5PdAUImduYcDgkrdEs6OqCz1yj752aaghQVFXi7VBo78ZO0HMlNLMK9X2+Tq6LRZ0SYGA88Kl+lKqtu1aaER1tGfYZixoGNZGyX8chZm1P7IzXxORQnlNLu7fQon4Jo1h87YcWmrqTfFTgNI9sj2×48n7Jos0/zZj/2mZgSVgh84Ew+Gv1PdIQAfLn4JsIFzOQvtMrvrtJxKWHGaAjtuAsi1pn5NcI069PpFs+TlH80X5hcRLEUPi3zpQHzSajXr+2vRPuwLRnqDNC4UJsLLiYUG/KRCto9ztXjlIvra4TR33vLU+FAAAAEGRB7lLtZlnNTq+JWH7BiW2BnYE</CipherValue>
</CipherData>
</EncryptedData>
</connectionStrings>

说明加密已经完成,接着我们可以看一下是否影响浏览:

怎么样对Web.Config文件操作??

04-29

代码如下:rnpublic void read()rnrn string filename=Server.MapPath("Web.config");rn XmlDocument xmldoc= new XmlDocument();rn xmldoc.Load(filename);rnrn XmlNodeList topM=xmldoc.DocumentElement.ChildNodes;rn foreach(XmlElement element in topM)rn rn if(element.Name=="appSettings")rn rn XmlNodeList node=element.ChildNodes;rn if ( node.Count > 0 )rn rn DropDownList1.Items.Clear();rn foreach(XmlElement el in node)rn rn DropDownList1.Items.Add(el.Attributes["key"].InnerXml);rn rn rn rn rnrnrnpublic void write()rnrn string filename=Server.MapPath("") + @"\Web.config";rn XmlDocument xmldoc= new XmlDocument();rn xmldoc.Load(filename);rnrn XmlNodeList topM=xmldoc.DocumentElement.ChildNodes;rn foreach(XmlElement element in topM)rn rn if(element.Name=="appSettings")rn rn XmlNodeList node=element.ChildNodes;rn if ( node.Count > 0 ) rn rn foreach(XmlElement el in node)rn rn if(el.Attributes["key"].InnerXml.ToLower()==this.DropDownList1.SelectedItem.Value.ToLower())rn rn el.Attributes["key"].Value=this.TextBox1.Text;rn rn rn rn rn rn xmldoc.Save(filename);rnrnrn错误如下:rnrn对路径“c:\inetpub\wwwroot\Example\第2章 ASP.NET运行模型\示例35\Web.config”的访问被拒绝。 rn说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 rnrn异常详细信息: System.UnauthorizedAccessException: 对路径“c:\inetpub\wwwroot\Example\第2章 ASP.NET运行模型\示例35\Web.config”的访问被拒绝。 rnrnASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的权限。ASP.NET 有一个在应用程序没有模拟时使用的基进程标识(通常,在 IIS 5 上为 MACHINE\ASPNET,在 IIS 6 上为网络服务)。如果应用程序正在通过 模拟,则标识将为匿名用户(通常为 IUSR_MACHINENAME)或经过身份验证的请求用户。 rnrn若要授予 ASP.NET 对文件的写访问权,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”添加适当的用户或组。突出显示 ASP.NET 帐户,选中所需访问权限对应的框。 论坛

没有更多推荐了,返回首页