【问题标题】:Connectionstring Encryption in MVC2 .NET 4.0 appMVC2 .NET 4.0 应用程序中的连接字符串加密
【发布时间】:2010-11-16 18:12:29
【问题描述】:

我有一个 MVC2 .NET 4.0 应用程序,托管在 TFS 2008(即将成为 TFS 2010)上,它使用 web.config 中的连接字符串连接到另一台服务器上的数据库。我需要加密这些连接字符串。

据我了解,我可以使用aspnet_regiis.exe 来加密web.config 文件的连接字符串部分,但我必须在部署机器上这样做,因为加密使用机器名称生成加密密钥。

现在,在我看来,这代表了一个问题——每次我将代码部署到开发服务器时,它不会覆盖 web.config 文件,并且需要重新加密吗?这种手动过程看起来很笨拙。

  1. 我对部署后需要重新加密的理解是否正确?

  2. 如果是这样,有什么方法可以自动化这个过程吗?我不想忘记这一点,也不想让一个新的团队成员不知道这个过程并且将连接字符串暴露给世界。

【问题讨论】:

    标签: asp.net web-config


    【解决方案1】:

    web.config 文件通常不是部署的一部分(尽管 Visual Studio 2010 在 Web 应用程序部署项目中支持 configuration file transforms)。我不希望您在部署时覆盖 web.config(因为 web.config 是您放置特定于该机器/环境的那些东西的地方。

    所以,我的建议是加密一次,然后不要覆盖它。

    由于在您的情况下不可用,因此可以在加密时指定密钥,以便您可以在机器之间共享加密文件。默认情况下,加密命令使用 DPAPI 加密部分(绑定到机器),但您也可以使用 RSA 进行加密。更多信息可在 MSDN 上Specifying a Protected Configuration Provider 获得。

    【讨论】:

    • 很多时候需要重新部署 web.config。如果您在 web.config 中存储应用程序设置并且它们发生更改,如果 IOC 配置更改,查看引擎名称空间更改等。
    • 遗憾的是,我们对 dev 的部署包括将文件拖放到服务器 - 所以 web.config 实际上每次都会被覆盖。我知道这不是最佳选择,但我无法改变。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    相关资源
    最近更新 更多