Web.config中的connectionStrings怎么加密和解密
发布时间 - 2026-01-08 00:00:00 点击率:次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 应用池标识有相应密钥访问权限:
- 引用命名空间:
System.Configuration和System.Web.Con
figuration - 加密示例(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再操作更安全 - 上线前务必验证加密后站点是否正常连接数据库,避免密钥权限或提供程序配置遗漏
基本上就这些。命令行方式快、稳、易回滚,开发和运维都够用。
# windows
# app
# 工具
# iis
# pdf
# win
# microsoft
# c#
# .net
# NULL
# if
# 命名空间
# var
# 数据库
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
EditPlus中的正则表达式 实战(1)
Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】
Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程
javascript中闭包概念与用法深入理解
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
jQuery 常见小例汇总
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
JavaScript如何实现倒计时_时间函数如何精确控制
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
大同网页,大同瑞慈医院官网?
详解Oracle修改字段类型方法总结
bing浏览器学术搜索入口_bing学术文献检索地址
济南网站建设制作公司,室内设计网站一般都有哪些功能?
高端智能建站公司优选:品牌定制与SEO优化一站式服务
Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例
Laravel如何配置Horizon来管理队列?(安装和使用)
如何快速建站并高效导出源代码?
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
详解Android中Activity的四大启动模式实验简述
网站图片在线制作软件,怎么在图片上做链接?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
详解vue.js组件化开发实践
android nfc常用标签读取总结
php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
javascript基本数据类型及类型检测常用方法小结
如何用y主机助手快速搭建网站?
今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】
如何快速搭建虚拟主机网站?新手必看指南
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】
iOS UIView常见属性方法小结
Laravel怎么使用Intervention Image库处理图片上传和缩放
如何用狗爹虚拟主机快速搭建网站?
文字头像制作网站推荐软件,醒图能自动配文字吗?
Laravel如何处理表单验证?(Requests代码示例)
Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】
Android中AutoCompleteTextView自动提示
高防服务器租用首荐平台,企业级优惠套餐快速部署
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧
千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】
网站制作壁纸教程视频,电脑壁纸网站?
Laravel Session怎么存储_Laravel Session驱动配置详解
Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑
简单实现jsp分页
Laravel Blade模板引擎语法_Laravel Blade布局继承用法
南京网站制作费用,南京远驱官方网站?
google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤


figuration