浅谈ASP.NET配置文件加密

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

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

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

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

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

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

 

而后咱们按下面的步骤来加密和解密数据链接串加密

 

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

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

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

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

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

 

咱们在程序中并不要写任何代码来解密链接字符串,由于.NET会自动的为咱们解密。若是咱们要用链接字符串,能够像日常那样调用.

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

 

若是咱们想解密,只须要在VS的命令窗口中,输入aspnet_regiis.exe -pdf "appSettings" "C:\VisualStudio2008\Authorization"

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

再打开web.config,咱们能够看到解密后的字符串。

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

相关文章
相关标签/搜索