到目前为止,我一直是SQL Server开发人员,但是现在我必须制作一个ASP.net MVC5应用程序以允许用户访问数据。以前,所有访问都是通过(使用SSL加密的)ODBC连接进行的,这些连接使用SQL Server登录名进行保护。我对SQL Server安全管理感到满意;我有一堆定义的角色,通常在架构级别授予或拒绝访问。这也使我可以轻松地监视/审计访问和数据更改。
我所读到的有关ASP.net的所有内容似乎都希望我为该应用程序创建一个用户,并具有非常大的读/写权限,然后将它们逐个锁定在应用程序级别。如果可能的话,我真的不愿意这样做-我想让用户在运行时提供他们的SQL Server uid /密码,并据此确定他们的权限。我想我有两个问题:
这有可能吗?它似乎没有记录在任何地方,因为
一个选项。
是否有令人信服的理由说明为什么我不应该这样做
可能?我并不完全不愿意学习一种新的安全范式
如果这是我需要做的事情,以确保真正的安全。
请注意,由于各种原因,此处无法使用Windows身份验证。
最佳答案
不要将最终用户凭据直接用于数据库。
这种方法的根本问题是,您需要能够检索最终用户的密码才能连接到数据库。
这意味着,如果您的系统曾经遭到破坏,则将泄漏其他站点的密码(重用密码的用户)。
作为一种妥协,可以将数据库密码设置为最终用户密码的迭代哈希。
但是,您仍然需要将其(可能是加密的)存储在登录cookie中,这通常也是一个坏主意。
关于c# - 我可以使用SQL Server安全性来控制对(数据库优先)ASP.net应用程序的访问吗?怎么样?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46120153/