C# 保护Azure应用程序中的连接字符串和应用程序设置-如何在本地使用它们

C# 保护Azure应用程序中的连接字符串和应用程序设置-如何在本地使用它们,c#,asp.net,azure,web-config,connection-string,C#,Asp.net,Azure,Web Config,Connection String,在作为Azure应用程序服务托管的web应用程序中,我的web.config中有以下内容用于测试: <connectionStrings> <add name="ProductionConnection" providerName="System.Data.SqlClient" connectionString="Data Source=tcp:something.database.windows.net,1433;Initial Catalog=DatabaseNam

在作为Azure应用程序服务托管的web应用程序中,我的
web.config
中有以下内容用于测试:

<connectionStrings>
    <add name="ProductionConnection" providerName="System.Data.SqlClient" connectionString="Data Source=tcp:something.database.windows.net,1433;Initial Catalog=DatabaseName;User Id=admin@sssdddr;Password=Pass@word1;Trusted_Connection=False;Encrypt=True;Connection Timeout=30; MultipleActiveResultSets=True" />
</connectionStrings>

这个特定的设置是一个坏例子,因为理想情况下,我只会将
ProductionConnection
存储在Azure中,并且从不在本地使用-但是对于本地和生产中使用的其他连接字符串和
appSettings
应该受到保护,在本地开发时我应该如何处理这些值

我的意思是不应该烘焙连接字符串值/应用程序设置 进入应用程序的bin目录

连接字符串通常位于web.config文件中。web.config永远不会在bin文件夹中;我们通常将其放在应用程序的根文件夹中

我相信您的意思是存储敏感信息,如用户名和密码,以访问SQL Server。您不能对调试应用程序的开发人员隐藏连接字符串和设置


在公司环境中,我们(开发人员)使用Windows身份验证来访问SQL Server。

如果您希望从开发人员处获取安全机密/连接字符串,请使用该方法,以保护所有人的机密。每个秘密都将作为URI公开给最终开发人员,以便通过REST使用


为此,,你需要使用Azure AD,因为KeyVault会请求AD令牌来提供机密。

在本地开发时,我应该如何处理这些值
你的意思是开发人员不应该看到连接字符串值吗?@Win我的意思是连接字符串值/应用程序设置不应该烘焙到应用程序的
bin
目录中您有一个应用程序设置,它为您提供azure blob存储容器名称。你想保护它免受攻击者的攻击,只是因为。开发者可以看到,没问题。您将应用程序设置添加到azure中,以便在运行时将其注入您的
app.config
。但是这个值还没有从app.config中删除,因为开发者仍然需要它。那么,您如何完全防止有人反编译您的应用程序并访问“敏感”信息。我们通常保持应用程序设置在那里。我遗漏了什么吗?您的开发人员在开发本地设置时是否使用azure连接字符串和设置?当然-例如,twilio api密钥或条带密钥。嗯,您将需要单独的测试帐户。理想情况下,我们不应该将敏感信息签入源存储库。