Encryption 保护Microsoft Azure和web.config中的连接字符串
我在web.config中加密连接字符串,如下所述:Encryption 保护Microsoft Azure和web.config中的连接字符串,encryption,web-config,azure,connection-string,Encryption,Web Config,Azure,Connection String,我在web.config中加密连接字符串,如下所述: 已发布到Azure,一切都按预期运行。 但是现在我的本地开发面临着一个问题,我的本地数据库不需要加密连接字符串。 我的本地开发配置为调试配置,我尝试替换(转换)web.config的加密连接字符串部分,如: <connectionStrings configProtectionProvider="CustomProvider"> <EncryptedData Type="http://www.w3.org/2001/04/
已发布到Azure,一切都按预期运行。
但是现在我的本地开发面临着一个问题,我的本地数据库不需要加密连接字符串。
我的本地开发配置为调试配置,我尝试替换(转换)web.config的加密连接字符串部分,如:
<connectionStrings configProtectionProvider="CustomProvider">
<EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
...
</EncryptedData>
只是想知道。。。为什么要保护连接字符串?您可以将连接字符串放在.cscfg文件中,并且该文件不会通过IIS以任何方式公开。是的,您可以将它们放在.csfg文件中,并创建一个库来提取连接字符串(只需提供DLL):
这不是关于在IIS中公开,而是关于即使在cscfg文件中也可以读取connectionstring和普通密码。出于安全原因,我喜欢隐藏sql azure的密码,因为对于本地开发,不需要知道azure密码。我无法在网上找到关于在cscfg中存储加密连接字符串的帖子,尽管这也是我想要做的。如果您发现了什么,请回答为什么在调试模式下使用相同的用户/pwd?使用其他登录凭据在另一个数据库上调试。
<connectionStrings>
<add name="ApplicationServices" connectionString="data source=localhost...
</connectionStrings>
public class MyContext : DbContext
{
private MyContext(string connString)
: base(connString)
{
}
public static MyContext GetMyContext()
{
string dbConnString = CloudConfigurationManager.GetSetting("MyDbConnectionString");
return new MyContext(decrypt(dbConnString));
}
}