【发布时间】:2018-03-20 14:20:47
【问题描述】:
我有一个 ASP.NET Core 2.0 WebAPI 应用程序,它在 appSettings.json 中有 Db ConnectionString。 在开发过程中,它具有以下价值:
"DefaultConnection":"Server=localhost;Database=Tyroll;Trusted_Connection=True;MultipleActiveResultSets=true"
只有当我们将其发布到生产环境时,我们才会使用 VS 2017 发布配置文件使用适当的密码对其进行更改。
所以 SQL Server 的密码没有存储在存储库中,也没有问题。
文件 appsettings.json 是protected by IIS
我想知道的问题是,即使在 IIS 上,这个密码是否应该以某种方式“隐藏”?
一个原因是额外的安全性,这样 SQL 凭据就不是纯文本的,以防在此处发生违规行为。
另一个用于 IIS 管理员不应直接访问 SQL 服务器的授权场景。
我认为它可以被加密,并且应用程序本身将具有用于解密它的密钥。这不会是 100% 安全的,因为在 IIS 遭到破坏的情况下,即使这个密钥也可以从应用程序中进行逆向工程,但是当它以纯文本形式存在时,它会变得更加困难。
所以第一个问题是我应该这样做吗?
其次,如果 1.Q 是肯定的,那么最好/推荐的方法是什么?
.NetCore2 或 VS2017 或 IIS 或其他工具中是否有一些内置工具?
以下是一些相关链接:
【问题讨论】:
标签: asp.net security connection-string password-encryption appsettings