到目前为止,我使用 SHA256 对密码进行哈希处理(我知道,很糟糕),现在我想切换到 Argon2。
我的问题是,如果我理解正确,我现在必须将纯文本密码存储在会话变量中。
现在我将 SHA256 哈希值存储在会话变量中,并且我有一个check_user
函数可以检查用户是否仍然登录我的大多数函数。
def check_user(request):
if 'email' not in request.session or not request.session['email']:
return False
if 'pw_hash' not in request.session or not request.session['pw_hash']:
return False
try:
Clients.objects.get(pk=request.session['email'])
except Clients.DoesNotExist:
return False
if request.session['pw_hash'] != Clients.objects.get(pk=request.session['email']).password:
return False
return True
如果我切换到 Argon2,据我了解,我必须将纯密码存储在会话变量中才能使用PasswordHasher().verify
,这是 IMO 的一种不好的做法。
这个问题的推荐方法是什么?