【问题标题】:Hiding a passwordhash field in EntityFramework在实体框架中隐藏密码哈希字段
【发布时间】:2010-06-07 20:10:02
【问题描述】:

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

我有几个想法

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

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

【问题讨论】:

    标签: c# sql entity-framework


    【解决方案1】:

    你有几个选择:

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

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

    【讨论】:

    • 谢谢,比我的想法更简单的解决方案,但无论哪种方式都需要一些数据库黑客攻击。我想我会直接删除它并创建一个登录 sp,它将用户 ID 和输入的密码作为哈希。
    猜你喜欢
    • 2015-08-18
    • 2015-05-05
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-29
    • 2019-09-10
    相关资源
    最近更新 更多