【发布时间】:2022-01-10 15:16:19
【问题描述】:
我有一个直接访问数据库的应用程序。此应用程序根据上下文控制用户可以执行的操作。
目前,我使用的是 Windows 身份验证,但所有用户都有选择、插入、更新和删除的权限,因为控制操作的是应用程序。
例如,一个用户可以修改一个文档,但前提是该文档是由该用户创建的。因此,在数据库中,用户必须有权创建更新,但前提是它是文档的所有者。我不确定是否可以使用 SQL Server 用户角色处理这种情况。
但问题是所有用户都拥有数据库的所有权限,因此他们可以使用另一个应用程序(如 SQL Server Management Studio)来访问数据库并做他们想做的事。
所以我在考虑使用 SQL Server 身份验证的选项,并具有对数据库的完全访问权限。该用户不为用户所知,因此无法使用其他应用程序修改数据库。
我看到这个解决方案的问题是我必须将凭据存储在客户端应用程序中,我不知道这是否真的是一种安全的方法。
如果使用 SQL Server 身份验证是一个不错的选择,我该如何以安全的方式存储用户的凭据?
我也阅读过有关应用程序角色的信息,但是需要将密码存储在客户端应用程序中,所以我想我会遇到同样的问题。而且我看不出应用程序角色和使用 SQL Server 身份验证之间的区别。
综上所述,按照我上面解释的方式使用 SQL Server 身份验证是不是一个很好的解决方案?如果这是一个不错的选择,我该如何以安全的方式存储凭据?
谢谢。
【问题讨论】:
-
密码也可以存入数据库
-
@viveknuna 如何将密码存储在数据库中?
-
@ÁlvaroGarcía 只需在数据库中以安全的方式探索存储密码,您就会明白
-
我过去读过有关如何将散列密码存储在数据库中的信息。我不知道你是不是这个意思。但是如果这样的话,如果我没记错的话,仍然需要将密码发送到服务器,服务器对密码进行哈希处理并将其与存储的哈希值进行比较。这是正确的吗?
标签: c# sql-server