Web.config 的 connectionStrings 节点可用 aspnet_regiis 命令行工具加密,支持虚拟路径(-pe -app)或物理路径(-pef),默认 RSA 加密,也可选 DPAPI;解密须在同一台机器执行(-pd/-pdf);编程方式需引用 System.Configuration 等命名空间并调用 ProtectSection/UnprotectSection;注意密钥权限、路径规范及避免重复加密。

Web.config 中的 connectionStrings 节点可以通过 .NET 内置的受保护配置系统加密,无需改代码、不依赖第三方库,加密后 ASP.NET 运行时自动解密供程序使用。
用 aspnet_regiis 命令行加密
这是最常用、最稳妥的方式,适用于部署前或服务器环境操作:
- 打开命令提示符(以管理员身份运行)
- 切换到对应 .NET Framework 目录,例如:
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 - 执行加密命令(按虚拟路径):
aspnet_regiis -pe "connectionStrings" -app "/MyApplication" - 若用物理路径(比如本地开发调试):
aspnet_regiis -pef "connectionStrings" "D:\MyApp" - 默认使用 RSAProtectedConfigurationProvider;如需改用 DPAPI(仅限本机),加参数 -prov "DataProtectionConfigurationProvider"
用 aspnet_regiis 解密
解密必须在**同一台机器**上进行(RSA 密钥绑定机器,DPAPI 绑定用户/机器):
- 解密虚拟路径下的配置:
aspnet_regiis -pd "connectionStrings" -app "/MyApplication" - 解密物理路径下的配置:
aspnet_regiis -pdf "connectionStrings" "D:\MyApp" - 注意:中文路径、空格、权限不足都可能导致失败,建议路径全英文、无空格
编程方式加密(页面按钮触发)
适合需要在管理后台动态操作的场景,但要求 IIS 应用池标识有相应密钥访问权限:
ECTouch是上海商创网络科技有限公司推出的一套基于 PHP 和 MySQL 数据库构建的开源且易于使用的移动商城网店系统!应用于各种服务器平台的高效、快速和易于管理的网店解决方案,采用稳定的MVC框架开发,完美对接ecshop系统与模板堂众多模板,为中小企业提供最佳的移动电商解决方案。ECTouch程序源代码完全无加密。安装时只需将已集成的文件夹放进指定位置,通过浏览器访问一键安装,无需对已有
- 引用命名空间:
System.Configuration和System.Web.Configuration - 加密示例(C#):
var config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
var section = config.GetSection("connectionStrings");
if (section != null && !section.SectionInformation.IsProtected)
section.SectionInformation.ProtectSection("RSAProtectedConfigurationProvider");
config.Save(); - 解密只需把
ProtectSection换成UnprotectSection - 注意:RSA 加密需提前授权密钥容器,常见命令:
aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITY\NETWORK SERVICE"
关键注意事项
加密不是万能的,几个容易踩坑的点要盯住:
- 加密后 web.config 仍可被直接读取,但内容是密文,ASP.NET 自动解密——代码里
WebConfigurationManager.ConnectionStrings照常取值 - RSA 加密的密文不能跨机器解密;DPAPI 方式也不能跨用户或跨机器还原
- 不要对已加密的节重复执行加密命令,会报错;先判断
IsProtected再操作更安全 - 上线前务必验证加密后站点是否正常连接数据库,避免密钥权限或提供程序配置遗漏
基本上就这些。命令行方式快、稳、易回滚,开发和运维都够用。









