ASP.NET Core appSettings.json 安全性

标签 asp.net security connection-string password-encryption appsettings

我有一个 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/

相关文章:

c# - 提交使用没有用户名和密码的 Windows 帐户凭据的开发和生产连接字符串是否安全?

.net - 以编程方式设置页面输出缓存 VaryByCustom 值

php - 如何强制用户注销symfony2

asp.net - 防止登录用户访问asp.net mvc 5中的登录页面

json - 在 post 请求正文中的 Json 对象中发送用户名和密码是否安全?

php - 上次事件存储的用途和优点 - session 管理

c# - 配置字符串的 Winforms 连接属性对话框

sqlalchemy - 如何从 SQLAlchemy 引擎实例获取连接 URL?

asp.net - 如何在普通 ApiController 中从 oData 查询字符串手动填充 ODataQueryOptions?

asp.net - 如何在 ASP.NET 5/MVC 6 的单元测试中访问 HttpContext