• 浅谈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:VisualStudio2008Authorization"

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

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

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

     

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

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

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

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

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

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

  • 相关阅读:
    簡化SQL Insert、Update、Delete、Select的方法
    Microsoft SqlHelper Class
    EntLib5.0 日志应用程序块(logging) 使用与配置
    EnterpriseLibrary及Log4Net於WebConfig或AppConfig的相關配置
    LogHelper
    log4net使用详解
    Create\Move\Delte Folder\File
    Log4Net使用详解(续)
    DataSet 类(四)读写XML
    SqlDataAdapter类
  • 原文地址:https://www.cnblogs.com/xiaomowang/p/8430463.html
Copyright © 2020-2023  润新知