如何对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命令提示
加密后的结果
AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAy1WyvzomB0WAlqYo+ogiigQAAAACAAAAAAADZgAAqAAAABAAAADbDjp+bAce//lsg/so66+8AAAAAASAAACgAAAAEAAAANlF3b73Kdupv/cAf4a9nPUwAQAAoTvrHdAjNjaJFEfiG7pD6sG8GMNJKGpnd4JLchu7W9XhOuPgG4C/LD9H9WQ9uF3t/0MoMI9tbrWdFJ1Yu5/e3PAV4RCbCvDlPD0VC7hxtDMqfRjQ+1OhTdk2woiSNpx0TzXwZE25o4vlXq/aYri1Wmlo2zyRqSkg0hQFQbObCf7lrgWEUjsv+pEOS5OVXcgNhFipVMy5iQ8sH5fNHmGg8gu5JlZQaOqYFG8ci7MGOebcQzR67krJXRBrs26lZtAj8lzf2bK+QcSqtU7Rt4C33JbLqisPL9xhfoUl9GvGTu5VS1S1H5VtErTeYXxnL7PTIr3cNjIbDMjI48LJfoOgtymT35KUdK3J0DxB68DqPaeK5QSEC/L0+6bizStRZ7BDnOngV/XfiVJnbSNYXX5IShQAAACuGn8QGUuQ4TOzkKcc891SV/CVDQ==
lt;/connectionStrings>
3. 解密
解密该连接字符串也很简单
aspnet_regiis.exe -pdf "connectionStrings" '你的web项目路径"
解密后的结果:
4. 后台代码读取配置文件web.config中数据库连接字符串的方法:
using System.Configuation;
…
protected void Page_Load(object sender, EventArgs e)
{
lblMessage.Text = ConfigurationManager.ConnectionStrings["Sql"].ToString();
}
…
5. 在连接字符串的加密和解密的过程中,需要注意一下几点。
使用加密的连接字符串
使用加密的连接字符串不需要编码解密,ASP.NET会自动对加密内容进行解密。
加密和解密在同一台计算机上使用
在加密过程中,使用了一个基于本机的密钥。这就意味着加密和解密必须在同一台计算机上进行,否则将不能解密。同时,在一台计算机上加密的配置,在另一台计算机上将不能正常使用。
中文路径问题
该命令对中文支持不是很好。如果站点的路径中有中文字符,也许不能正常加解密。
你好,可以使用受保护配置来加密 Web 应用程序配置文件(如 Web.config 文件)中的敏感信息(包括用户名和密码、数据库连接字符串和加密密钥)。对配置信息进行加密后,即使攻击者获取了对配置文件的访问,也可以使攻击者难以获取对敏感信息的访问,从而改进应用程序的安全性。 针对asp.net 2.0的应用程序的数据库链接字符串进行加密:例如,未加密的配置文件中可能包含一个指定用于连接到数据库的连接字符串的节,如下面的示例所示:
ASP.NET 2.0 中有一个新的安全特性.可以对 Web.config 文件中的任何配置节进行加密处理,可以通过手工运行工具aspnet_regiis或者编程来完成这个工作。如果你可以直接访问你的Web 服务器,你可以通过运行如下的命令行: cd %windows%/Microsoft.NET/Framework/versionNumber aspnet_regiis -pe "connectionStrings" -app "/SampleApplication" –prov RsaProtectedConfigurationProvider -pd section
对配置节进行解密。此参数采用下面的可选参数: · -app virtualPath 指定应该在包含路径的级别进行解密。 · -location subPath 指定要解密的子目录。 · -pkm 指定应该对 Machine.config 而非 Web.config 文件进行解密。
-pdf section webApplicationDirectory
对指定物理(非虚拟)目录中的 Web.config 文件的指定配置节进行解密。
-pe section
对指定的配置节进行加密。此参数采用下面的可选修饰符: · -prov provider 指定要使用的加密提供程序。 · -app virtualPath 指定应该在包含路径的级别进行加密。 · -location subPath 指定要加密的子目录。 · -pkm 指定应该对 Machine.config 而非 Web.config 文件进行加密。
-pef section webApplicationDirectory
对指定物理(非虚拟)目录中的 Web.config 文件的指定配置节进行加密。
如果你是使用虚拟主机等不能访问物理的服务器,你仍然能够通过编程方式加密的连接字符串: 1 Configuration config = Configuration.GetWebConfiguration(Request.ApplicationPath);
2 ConfigurationSection section = config.Sections["connectionStrings"];
3 section.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider");;
4 config.Update ();或者 config.Save();
//加密web.Config中的指定节
private void ProtectSection(string sectionName)
{
Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
ConfigurationSection section = config.GetSection(sectionName);
if (section != null && !section.SectionInformation.IsProtected)
{
section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
config.Save();
}
}
//解密web.Config中的指定节
private void UnProtectSection(string sectionName)
{
Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
ConfigurationSection section = config.GetSection(sectionName);
if (section != null && section.SectionInformation.IsProtected)
{
section.SectionInformation.UnprotectSection();
config.Save();
}
}
接字符串写入到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命令提示
加密后的结果
<connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">
<EncryptedData>
<CipherData> <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAy1WyvzomB0WAlqYo+ogiigQAAAACAAAAAAADZgAAqAAAABAAAADbDjp+bAce//lsg/so66+8AAAAAASAAACgAAAAEAAAANlF3b73Kdupv/cAf4a9nPUwAQAAoTvrHdAjNjaJFEfiG7pD6sG8GMNJKGpnd4JLchu7W9XhOuPgG4C/LD9H9WQ9uF3t/0MoMI9tbrWdFJ1Yu5/e3PAV4RCbCvDlPD0VC7hxtDMqfRjQ+1OhTdk2woiSNpx0TzXwZE25o4vlXq/aYri1Wmlo2zyRqSkg0hQFQbObCf7lrgWEUjsv+pEOS5OVXcgNhFipVMy5iQ8sH5fNHmGg8gu5JlZQaOqYFG8ci7MGOebcQzR67krJXRBrs26lZtAj8lzf2bK+QcSqtU7Rt4C33JbLqisPL9xhfoUl9GvGTu5VS1S1H5VtErTeYXxnL7PTIr3cNjIbDMjI48LJfoOgtymT35KUdK3J0DxB68DqPaeK5QSEC/L0+6bizStRZ7BDnOngV/XfiVJnbSNYXX5IShQAAACuGn8QGUuQ4TOzkKcc891SV/CVDQ==</CipherValue>
</CipherData>
</EncryptedData>
lt;/connectionStrings>
3. 解密
解密该连接字符串也很简单
aspnet_regiis.exe -pdf "connectionStrings" '你的web项目路径"
解密后的结果:
<connectionStrings>
<add name="Sql" connectionString="Data Source=.;Initial Catalog=MySchool;Integrated Security=True" />
</connectionStrings>
4. 后台代码读取配置文件web.config中数据库连接字符串的方法:
using System.Configuation;
…
protected void Page_Load(object sender, EventArgs e)
{
lblMessage.Text = ConfigurationManager.ConnectionStrings["Sql"].ToString();
}
…
5. 在连接字符串的加密和解密的过程中,需要注意一下几点。
使用加密的连接字符串
使用加密的连接字符串不需要编码解密,ASP.NET会自动对加密内容进行解密。
加密和解密在同一台计算机上使用
在加密过程中,使用了一个基于本机的密钥。这就意味着加密和解密必须在同一台计算机上进行,否则将不能解密。同时,在一台计算机上加密的配置,在另一台计算机上将不能正常使用。
中文路径问题
该命令对中文支持不是很好。如果站点的路径中有中文字符,也许不能正常加解密。
每次打开网页都会弹出一个WEB
如果你是用得遨游这类的浏览器的话,就直接选着“工具”进入“遨游设置中心”选着使用空白页 就可以了,如果没有用这类辅助浏览器的话那么直接选着“工具”-“Internet选项”-“常规”-点击“使用空白页” 或者设置成你想要的主页,然后确定退出就可以了 ...
为什么要选择Web3?它有什么好处?
原文链接:https:\/\/medium.com\/api3\/why-web3-what-is-it-good-for-6ed1c4036220 作者:Ryan Boder 译者:iguana 翻译机构:WhaleDao Web3无疑是当前最热门,也最有争议的名词之一。与加密狂热者交谈,你会听到Web3是互联网的未来,它将把我们从垄断性技术公司和压迫性政府的桎梏中解放出来;与愤世嫉俗者交谈...
您的Web浏览器已经阻止此站点以不安全的方式使用ActiveX 控件_百度...
你这种情况可能是你加了“信任站点”但在改ACTIVE的选项的时候改的是INTERNET或者本地INTERNET里面的ACTIVE,信任站点里面也要自定义级别,将ACTIVE改为提示或启用。打开internet选项(在控制面版里面或者直接打开IE浏览器,点工具——INTERNET选项)点开安全选项,把站点加入受信任站点,再在“受信任站点”...
如何成功的面试WEB前端开发
链接: https:\/\/pan.baidu.com\/s\/1Ny89HYLCB8m7qJQfndw2Dg 前端开发小白面试指南来自:百度网盘提取码: htw7复制提取码跳转 提取码: htw7Web前端开发小白面试最强指南-第1张图片。 抢首赞 已赞过 已踩过< 你对这个回答的评价是? 评论 分享 复制链接https:\/\/zhidao.baidu.com\/question\/501345873722681804\/...
如何登陆各大搜索引擎
网络上的搜索引擎何止上千,即使不把英文搜索引擎算在内,仅简体中文版的搜索引擎就不下百个,为此我们除了需要使用“AddWeb”或“登陆奇兵”之类专门把网站注册到各种搜索引擎的软件进行登陆外(事实上,我不太赞同使用这种软件,因为这种登陆方式绝对不会比你自己手工一个个去登陆更能成功),更需要自己...
如何建立一个web网站?请各位大虾帮帮忙啊.介绍一两本电子书什么的.谢谢...
http:\/\/tech.163.com\/special\/w\/000915SQ\/webmediatech.html 3.如果会做了,申请免费主页空间,如果自己有更好了,(注:主机是空间)没有请去这里找一个适合自己的申请,免费。 http:\/\/www.14567.com 4.把做好的主页上传到您的空间。需要FTP上传软件。 下载地址: http:\/\/www.14567.com\/ftp.html 5.用您...
【转】互联网的下一站:了解2022年的6个热门Web3.0项目
原文:https:\/\/www.panewslab.com\/zh\/articledetails\/1641449995565869.html 介绍 随着2022年的开始,我们对未来数字资产世界的发展充满了兴奋之感,2021年的数字资产世界充满了飞速增长的NFTs、DeFi和Play2Earn项目。近年来,在经历了几次失败的开始后,新年终于被认为是Web 3.0的突破——互联网的版本...
百度正式推出PC浏览器 打通Web App入口
腾讯科技讯(利康)7月18日消息,百度PC端浏览器正式进入公测阶段,即日起,用户可以立即访问 http:\/\/liulanqi.baidu.com\/进行下载。最新推出的百度浏览器打通了WEB APP的入口,将超过三万的海量应用整合到同一个平台中供用户选择。通过推出PC端浏览器,百度希望进一步强化“框计算”在用户桌面端的体现,...
WEB应用与网站的区别
(1)这种架构采用Internet上标准的通信协议(通常是TCP\/IP协议)作为客户机同服务器通信的协议。这样可以使位于Internet任意位置的人都能够正常访问服务器。对于服务器来说,通过相应的Web服务和数据库服务可以对数据进行处理。对外采用标准的通信协议,以便共享数据。(2)在服务器上对数据进行处理,就处理...
Web邮箱是什么邮箱
功能:WebMail是一个基于Web的电子邮件收发系统,扮演邮件用户代理角色,一般而言,WebMail系统提供邮件收发、用户在线服务和系统服务管理等功能。WebMail的界面直观、友好,不需要借助客户端,免除了用户对E-mail客户软件(如:Foxmail、Outlook等)进行配置时的麻烦,只要能上网就能使用WebMail,方便用户对邮件...
拔慧欣苏: WEB.CONFIG 文件不需要加密,对客户端访问本身就有安全限制,不可以下载不可以访问. 如果想防止服务器端看到,还是少往里面写系统设置信息,用数据库存储加密后的系统设置信息.
集安市13042469780: 如何对web.config进行加密和解密 - ?
拔慧欣苏: 加密一个特定网站的web.config文件的通用形式 aspnet_regiis.exe -pef secion physical_directory -prov provider 或 aspnet_regiis.exe -pe secion -app virtual_directory -prov provider 其中,各个参数的含义如下: section表示要加密的配置节 ...
集安市13042469780: web.config的字符串加密是怎么做的 - ?
拔慧欣苏: 一、如何对Web.config中数据库连接字符串进行加解密,避免明文方式. 1)概述: Web.Config 中可以存储数据库连接语句,通常存于 配置节中,程序调用非常方便,但是在系统的应用过程中,利用明文存储这些敏感信息是不安全的,这就需...
集安市13042469780: 如何在VisualStudio2005的Web config文件中对数据库连接字符串进行加密? - ?
拔慧欣苏: 配置文件的加密可以用.NET自带的进行加密. 当然,如果不在配置文件中加密也有办法,比如你可以封装到你的DLL里面.
集安市13042469780: 怎样给Ture Type字体加密?(英文字体)啊?
拔慧欣苏: 在asp.net2.0中,发布网站时,加密web.config,这样可以有效保证数据库用户和密码安全,其步骤如下: 1.添加密钥 执行:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pc "hnlaw" -exp 其中"hnlaw"为密钥名称 2.添加...
集安市13042469780: 如何在web.config中设置后台密码(详细一点)?
拔慧欣苏: <add name="sqlserver" connectionString="user id=登陆数据库的账户名称;password=登陆账户密码;database=数据库名称;server=数据库地址(IP)" providerName="System.Data.SqlClient"/> 就是那么简单了~
集安市13042469780: 怎样在web.config文件中配置连接字符串 - ?
拔慧欣苏: System.Configuration.ConfigurationManager.ConnectionStrings["SqlConnStr"].ConnectionString.ToString(); 这就等于"server=.\SQL2005;uid=sa;pwd=;database=PrettyWeb",
集安市13042469780: 如何把EntityFrameWork 的连接字符串配置到WebConfig 中 - ?
拔慧欣苏: 一、如何对Web.config中数据库连接字符串进行加解密,避免明文方式. 1)概述: Web.Config 中可以存储数据库连接语句,通常存于 配置节中,程序调用非常方便,但是在系统的应用过程中,利用明文存储这些敏感信息是不安全的,这就需...
集安市13042469780: FormsAuthentication这个类是怎么用的??
拔慧欣苏: 这个函数可以对明码进行加密 怎么跟web.config配合? 这个就是说有时候可能你要在web.config中存储一些敏感信息,就可以使用这个加密 http://msdn.microsoft.com/zh-cn/library/system.web.security.formsauthentication(VS.80).aspx http://msdn.microsoft.com/zh-cn/library/system.web.security.formsauthentication.hashpasswordforstoringinconfigfile(VS.80).aspx
集安市13042469780: 怎么解密Web.config里面的IP和密码?
拔慧欣苏: web.config的加密一般是在某台电脑上面进行的,只有在那台电脑上面才可以解密.. 你可以搜下 web.config的加密与解密