隐藏实体框架中的密码哈希字段

时间:2010-06-07 20:10:03

标签: c# sql entity-framework

我正在使用实体框架进行项目,并希望它的行为与我的普通ado.net项目类似,我从不从数据库中获取密码哈希,以避免秘密信息的安全泄漏。

我有几点想法

  • 一个是将字段隐藏起来 上课,但我不知道是不是 可能的。
  • 更改代码 生成模板有一个丑陋的if 该特例的条款

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

1 个答案:

答案 0 :(得分:2)

您有几个选择:

  1. 您可以从概念图层中删除Password属性,EF不会从数据库中选择它。 (在设计师中选择属性时,只需点击“删除”。)
  2. 您可以在数据库中创建一个视图,并仅发布密码的哈希值(即虚拟列)。 An earlier question of mine可能会对您有所帮助。
  3. 您可以使生成的实体中的Password属性的可访问性非公开。 (再次,在设计器中选择属性并检查其属性。)当然,请注意密码 使用此选项保留数据库。
  4. 对于前两种情况,您需要一个侧通道来更新数据库中的密码 - 可能是一个存储过程。第三个选项应该允许更新密码,同时保持密码不被日常用户隐藏,但当然它会在内存中,因此精明的用户可能仍然可以访问它。