【发布时间】:2020-10-27 11:49:24
【问题描述】:
我有一个使用 SQL Server 后端的 ASP.NET MVC 应用程序。但是,SQL Server 的身份验证方法是 SQL Server 身份验证,这意味着我需要询问用户密码才能通过我的应用程序连接到数据库。
理想情况下,我不想要求密码一次,为会话建立从应用程序到数据库的永久连接,然后完全忘记密码,因为我想打开和关闭与数据库的连接仅在执行数据库操作时才需要。
但显然,我也不想将他们的密码存储在 Session 对象中,无论应用程序是否将是 https 连接并面向内部,因为这是一个很大的禁忌。
在会话期间保持密码最安全的方法是什么?
我无法更改身份验证方法,理想情况下我想使用 Windows 身份验证,但这是不可能的。
【问题讨论】:
-
是否将连接字符串存储在
web.config中?您可以encrypt 敏感部分和/或使用 CI/CD 工具来确保没有人可以访问该机器 -
是什么阻碍了你以正常的方式间接地做到这一点?因此,当用户设置他的 PW 时,您将对其进行散列并将散列版本设置为用户的 SQL Server PW。当用户随后登录时,您只需在会话期间存储散列版本。那么,用户是否可以使用其他应用程序登录或直接连接到数据库?
-
你可以使用cookie
-
@PatrickBeynio 用户可以访问使用此密码登录的 WPF 应用程序。此外,他们也可以通过 SSMS 直接连接到数据库。他们的密码最初是由服务器的 DBA 分配的,然后用户必须在第一次通过 SSMS 登录服务器时更改它 - 所以我不能为他们散列并将其设置为密码。我也没有 DBA 级别的权限这样做
-
@timur 这可能是一个选择,我可能需要进一步调查,看看它是否可行
标签: c# asp.net-mvc passwords