【问题标题】:Hash password on mongoimport into user collection将 mongoimport 上的密码散列到用户集合中
【发布时间】:2015-07-20 03:44:58
【问题描述】:

所以我正在尝试将 csv 文件导入我的 mongo db。这些字段包括用户名和密码,这是一个字符串。我能够成功导入文件,但密码仅作为字符串存储。但是我的数据库存储散列密码,并且有一个盐字段。我想知道是否可以强制 mongo 在将密码导入数据库之前对其进行哈希处理。有命令还是我必须找到另一种方法?任何建议都非常感谢。

请注意,我能够成功导入所有数据,我只想知道如何在导入时对用户密码进行哈希处理然后存储它。

【问题讨论】:

  • 所以你的密码被存储为一个字符串,现在你想用它创建一个哈希?
  • 是的,它是我的 csv 文件中的一个字符串,但我想在插入 mongodb 之前创建一个散列版本。在我的常规用户注册中,Mongoose 负责 pre('save') 中的哈希,但在这种情况下,它显然没有被调用,因为我使用的是 mongoimport

标签: mongodb csv import passwords


【解决方案1】:

mongo import/restore 中没有“哈希我的密码”选项。我要做的是按原样恢复转储,然后update the fields value based on this value

db.yourCollection.find({}).forEach(function(doc) {
  doc.F1 = yourHashCalcFunction(doc.F1);
  db.yourCollection.save(doc);
});

【讨论】:

  • 这里的一个问题是,在某些时候,您将在服务器上发送和写入未散列的密码。因此,如果稍后以某种方式被破坏,则可能可以访问那些敏感数据(即使它们被“删除”——想想磁盘的某些扇区转储)。
  • 天哪,谢谢你去试试这个,不过问题很简单。我使用 Mongoose,它使用 Crypto 对密码进行哈希处理,现在为了让用户成功登录,我需要使用相同的函数对密码进行哈希处理,对吗?为无知道歉,这是我第一次使用 MEAN 堆栈
  • @SylvainLeroux 那么为什么不在本地计算机上执行此操作,然后执行 mongodump,然后恢复这个新的 mongodump。
  • @monologish 这听起来不错,但我会查阅您使用的任何加密库的文档。
  • @mongolish 你应该明白你在做什么first ;) 将盐存储在数据库中可以让获得数据库读取权限的攻击者更容易使用暴力破解对这些散列密码进行强制或字典攻击。添加盐的整个想法是,对散列文本具有读取权限的攻击者有一个未知因素需要处理。将盐存储在不同的数据源(例如配置文件)中被认为是最佳实践,并使其仅可供身份验证服务访问。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-23
  • 2021-09-27
  • 1970-01-01
  • 1970-01-01
  • 2013-10-05
相关资源
最近更新 更多