c# - 在 Entity Framework 中隐藏密码哈希字段

标签 c# sql entity-framework

我在一个项目中使用 Entity Framework ,并希望它以与我的普通 ado.net 项目类似的方式运行,我从不从数据库中获取密码哈希以避免 secret 信息的安全泄漏。

我有几个想法

  • 一个是隐藏部分字段 类,但我不知道那是不是 可能。
  • 更改代码 带有丑陋 if 的生成模板 该特殊情况的条款

我猜这些解决方案都不能阻止数据离开数据库,只是通过返回 String.Empty 等隐藏字段。 有什么方法可以完全不启用该字段,但仍然可以添加新用户或更改忘记密码功能中的哈希值。

最佳答案

您有几个选择:

  1. 您可以从概念层中删除密码属性,EF 不会从数据库中选择它。 (当您在设计器中选择属性时,只需点击“删除”。)
  2. 您可以在您的数据库中创建一个 View 并仅发布密码的哈希值(即虚拟列)。 An earlier question of mine可能会在这里帮助你。
  3. 您可以将生成的实体中的 Password 属性的可访问性设置为非公开。 (同样,选择设计器中的属性并检查其属性。)当然请注意,密码确实使用此选项离开数据库。

对于前两种情况,您需要一个侧 channel 来更新数据库中的密码 - 可能是一个存储过程。第三个选项应该允许更新密码,同时对日常用户隐藏它,当然它会在内存中,所以精明的用户可能仍然可以访问它。

关于c# - 在 Entity Framework 中隐藏密码哈希字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2992761/

相关文章:

sql - 重命名索引给出错误 Explicit @objtype id not recognized

mysql - 在 mysql 中使用 Sum (if) 的列总计

c# - 如何使用 Entity Framework 为我的存储库实现事务?

c# - 无法让打印机在 C# Windows 窗体项目中打印自定义尺寸的纸张

c# - 在 C# 中获取部分字符串的正则表达式模式或算法

C#如何重写这样的?

mysql - sql - 按计数更新列

.net - asp.net core 在两列上创建约束,其中一列是另一个实体

c# - Entity Framework DbSet 反射

c# - Blazor - 如何动态创建输入然后读取它们的值