c# - ASP.NET MVC - 如何安全地保存用户密码以进行 SQL Server 身份验证?
问题描述
我有一个使用 SQL Server 后端的 ASP.NET MVC 应用程序。但是,SQL Server 的身份验证方法是 SQL Server 身份验证,这意味着我需要询问用户密码才能通过我的应用程序连接到数据库。
理想情况下,我不想要求密码一次,为会话建立从应用程序到数据库的永久连接,然后完全忘记密码,因为我想在需要且仅在需要时打开和关闭与数据库的连接执行数据库操作时。
但显然,我也不想将他们的密码存储在一个Session
对象中,无论应用程序是否将是https
连接的并且面向内部,因为这是一个很大的禁忌。
在会话期间保持密码的最安全方法是什么?
我无法更改身份验证方法,因为理想情况下我想使用 Windows 身份验证,但这是不可能的。
解决方案
您有两种选择来解决此问题。
- 如果您使用的是 asp.net 身份,则可以为用户身份添加自定义声明,该声明将保存在身份验证 cookie 中以供会话使用。在此处查找示例和文章:
使用 Asp.Net Core Identity Cookie 登录时添加自定义声明
- 如果您不使用 Asp.net Identity,而是遵循旧式 Forms 身份验证,则可以将其添加为身份验证 cookie 中的自定义用户数据。
身份验证cookie中保存的用户数据将被加密,可以轻松检索,并在注销或会话到期后被丢弃。如果您的应用程序托管在与会话变量不同的服务器场上,它也将是线程安全的。
推荐阅读
- rust - Cap'n Proto 如何处理千兆字节级别的数据发送?
- angular - 错误类型错误:无法在 Object.eval [as updateRenderer] 处读取 null 的属性“电话”
- c++ - ECS框架中如何更新组件数据并通知系统?
- go - 从golang中的参数调用const
- smartcard - 选择小程序后选择文件会取消选择小程序吗?
- c# - 如何从本地机器\软件中删除密钥?
- python - pyqtgraph:X轴作为时间
- webdriver - 使用 webdriver 导出的图像发生了变化
- php - php 7.0 调用未定义函数 filter_var()
- javascript - Angular 等待变量初始化