浅谈ASP.NET配置文件加密

在刚刚完成的一个ASP.NET项目中,遇到了这么一个问题,项目部署到生产环境中时,领导要求项目中的配置文件(如web.config,app.config)中不能出现敏感字符,如:数据库连接,等等。

第一个想到的方法是,写一个加密解密算法,将这些配置文件中的值以密文的方式存到config文件中,代码中config文件的值的时候,再进行解密。这个方法直接被否定了,因为代码中,获取config值的地方很分散,很难一一修改。

找了一下资料,发现有一个完美的解决方案,简单,快速,又不会修改任何的代码。下面我们来看看是什么解决方案:

ASP. NET 2.0提供了一个保护配置模型来加密和解密web.config中sections信息。RSAProtectedConfigurationProvider:默认通过RSA公钥来加密和解密。

首先,我们通过在windows命令行中执行aspnet_regiis.exe来加密与解密。

VS中创建一个新的websit项目,打开web.config,加入数据库连接串,如:

 

然后我们按下面的步骤来加密和解密数据连接串

 

1. 开始菜单>>所有程序>>Microsoft visual studio 2008 >> Visual Studio Tools >> Visual Studio 2008 开发人员命令提示(如果是windows7,点右键与管理员身份运行)

2. 在命令窗口中,输入命令 aspnet_regiis.exe -pef "appSettings" "C:\VisualStudio2008\Authorization"

 –pef表明程序是以文件系统的形式建立的。第二个“appSettings”是你要加密的configuration 节点名字。第三个参数指名 web.config的物理路径。

3. 成功执行命令后会显示:加密成功。

现在,再打开程序中的 web.config,会变成像下面这样子了。

 

我们在程序中并不要写任何代码来解密连接字符串,因为.NET会自动的为我们解密。如果我们要用连接字符串,可以像平常那样调用.

string strconnection = ConfigurationManager.AppSettings["dbconnection"].ToString();

 

如果我们想解密,只需要在VS的命令窗口中,输入aspnet_regiis.exe -pdf "appSettings" "C:\VisualStudio2008\Authorization"

成功执行后,会显示解密成功。

再打开web.config,我们可以看到解密后的字符串。

小伙伴们,是不是很方便啊。

posted @   萌萌丶小魔王  阅读(1039)  评论(2编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示