我有一个 ASP.NET Core 2.0 WebAPI 应用程序,它在 appSettings.json 中有 Db ConnectionString。 在开发过程中,它具有以下值(value):
"DefaultConnection":"Server=localhost;Database=Tyroll;Trusted_Connection=True;MultipleActiveResultSets=true"
并且只有当我们将其发布到生产环境时,我们才会使用 VS 2017 发布配置文件使用适当的密码更改此设置。
因此 SQL Server 密码不会存储在存储库中,因此没有问题。
文件 appsettings.json 为 protected by IIS
我想知道的问题是,即使在 IIS 上,这个密码也应该以某种方式“隐藏”吗?
原因之一是额外的安全性,因此 SQL 凭据不是纯文本形式,以防出现泄露。
另一种用于某些授权场景,其中 IIS 管理员不应直接访问 SQL Server。
我认为它可以被加密,并且应用程序本身将具有用于解密它的 key 。这不会是 100% 安全的,因为在 IIS 遭到破坏的情况下,甚至可以从应用程序对这个 key 进行逆向工程,但这会比以纯文本形式存在时更加困难。
所以第一个问题是我应该这样做吗?
第二,如果 1.Q 为"is",那么最好/推荐的方法是什么?
.NetCore2、VS2017、IIS 或其他工具中是否有一些内置工具可以实现此目的?
以下是一些相关链接:
最佳答案
我建议您应该使用 Active Directory 集成安全性来访问数据库,应用程序池可以在用户帐户下运行,并且该特定用户帐户将仅具有对数据库所需的访问权限。由于密码永远不会泄露,因此可以在遭受攻击时保护用户凭据。
关于ASP.NET Core appSettings.json 安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46645341/