【问题标题】:Securing Connection String in Windows Azure and web.config在 Windows Azure 和 web.config 中保护连接字符串
【发布时间】:2011-05-18 09:59:13
【问题描述】:

我在 web.config 中加密连接字符串,如下所述:
http://blogs.msdn.com/b/sqlazure/archive/2010/09/07/10058942.aspx
已发布到 Azure,一切正常。

但是现在我在本地开发中遇到了一个问题,我在不需要加密连接字符串的本地数据库中工作。
我的本地开发配置为调试配置,我尝试替换(转换)web.config 的加密连接字符串部分,例如:

<connectionStrings configProtectionProvider="CustomProvider">
<EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
 ...
</EncryptedData>

与 web.config.debug 的常规非加密部分

<connectionStrings>
<add name="ApplicationServices" connectionString="data source=localhost...
</connectionStrings>

添加带有 xdt:Transform="Insert 的部分没有问题,但我没有设法从 web.config 中删除这些部分。
它会导致解析器错误消息:在调试模式下执行 Web 项目时无法识别元素“EncryptedData”。

有什么方法可以删除 web.config.debug 的 EncryptedData 部分,或者有什么更好的方法来解决这个问题?

【问题讨论】:

  • 为什么在调试模式下使用相同的用户/密码?使用其他登录凭据在另一个数据库上进行调试。

标签: encryption web-config azure connection-string


【解决方案1】:

只是想知道...为什么要保护连接字符串?您可以将连接字符串放在 .cscfg 文件中,并且该文件不会以任何方式通过 IIS 公开。

【讨论】:

  • 这不是在 IIS 中公开,而是关于即使在 cscfg 文件中您也可以读取连接字符串和纯密码。出于安全原因,我喜欢隐藏 sql azure 的密码,因为本地开发不需要知道 azure 密码。
  • 我在网上找不到关于在 cscfg 中存储加密连接字符串的帖子,尽管这也是我想做的。如果您发现了什么,请回复
【解决方案2】:

是的,您可以将它们放在 .csfg 文件中并创建一个库来提取连接字符串(只需提供 DLL):

public class MyContext : DbContext
{
    private MyContext(string connString)
        : base(connString)
    {
    }

    public static MyContext GetMyContext()
    {
        string dbConnString = CloudConfigurationManager.GetSetting("MyDbConnectionString");

        return new MyContext(decrypt(dbConnString));
    }
}

【讨论】:

    猜你喜欢
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    • 2013-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-14
    相关资源
    最近更新 更多