我有一个ASP.NET Core 2.0 WebAPI应用程序,它在appSettings.json中有Db ConnectionString。 虽然在发展它有这个值:ASP.NET核心appSettings.json安全
“DefaultConnection”: “服务器=本地主机;数据库= Tyroll; Trusted_Connection = TRUE; MultipleActiveResultSets =真正的”
,只有当我们把它发布到生产我们通过使用VS 2017发布配置文件来更改此适当的密码。
因此,SQL服务器密码不存储在存储库上,并且没有问题。
文件appsettings.json是protected by IIS
我想应该是这个密码被莫名其妙地“隐藏”甚至在IIS的问题?
其中一个原因是增加了安全性,以便在此处违规时SQL凭据不是纯文本格式。 另一种适用于IIS管理员不应直接访问SQL Server的授权方案。
我想它可以被加密,应用程序本身将有解密它的密钥。这不是100%安全的,因为在IIS上违反的情况下,甚至可以从应用程序反向设计这个密钥,但是当它以纯文本的形式存在时,它会变得更加困难。
所以第一个问题是我应该这样做呢?
第二,如果1.Q是,那么最好/推荐的方法是什么?
在.NetCore2或VS2017或IIS或其他工具中是否有内置的工具?
下面是一些相关链接:
- reddit aspnet_core_appsettingsjson_security_question
- stackoverflow is-appsettings-json-protected-by-iis
- itprotoday passwords-webconfig
- keeping-secrets-in-asp-net-core
这不是我的选择,因为SQL Server不在同一个域中,它在[DMZ](https://security.stackexchange.com/questions/3667/what-is-the-real-网络上的功能和使用) – borisdj
你的意思是说,SQL服务器在DMZ ..它必须是一个公共数据库托管服务器..不应该在DMZ –
是SQL服务器位于DMZ中,因此IIS位于另一个域中。 它不是公共托管,它是私人的,只有我们国际空间站的用户凭证(用户名和密码)才能访问它。 – borisdj