Python 检查查询参数或条件上的密码哈希

Python 检查查询参数或条件上的密码哈希,python,mongodb,Python,Mongodb,我想问的是,最好在mongo db中进行如下查询: db.users.findOne({'username': 'example', 'password': '5f189664bb2e58d4e2ee879835b13a7e3a790e14'}) user = db.users.findOne({'username': 'example'}) if user['password'] == passwordHash: print "Hello user" 或者在类似以下情况的if条件下

我想问的是,最好在mongo db中进行如下查询:

db.users.findOne({'username': 'example', 'password': '5f189664bb2e58d4e2ee879835b13a7e3a790e14'})
user = db.users.findOne({'username': 'example'})
if user['password'] == passwordHash:
    print "Hello user"
或者在类似以下情况的if条件下检查密码哈希:

db.users.findOne({'username': 'example', 'password': '5f189664bb2e58d4e2ee879835b13a7e3a790e14'})
user = db.users.findOne({'username': 'example'})
if user['password'] == passwordHash:
    print "Hello user"

谢谢!Jarus

这取决于如果找到用户但密码错误,您想做什么

  • 如果您想显示“不正确的用户名或密码”,您可以使用任何一种方法
  • 如果要显示“不正确的密码”,则需要第二种方法,因为第一种方法无法区分用户名是否有效、密码是否错误以及用户是否不存在

注意:如果你想保证你的系统安全,你可能更喜欢第一种方法而不是第二种方法。第二种方法遵循不同的代码路径,这取决于用户名是否存在,密码是否错误,或者用户名是否不存在。这可能会导致泄漏有关系统中存在哪些用户名的信息,这对攻击者很有用。

您也可以在第二条消息中显示“不正确的用户名或密码”:-p您可以显示任何消息。尽管这两种方法都很好,但在某些情况下,我认为第一种方法稍微好一点。泄露有关存在哪些用户名的信息的风险较小。