我使用Python的crypt程序包在Django網站的MySQL數據庫中保存加密的密碼。我不知道這是否是一個錯誤,但這裏是我使用的代碼:Python crypt package:可以在密碼中輸入多餘的字符
要加密/堅持密碼:
user.password = crypt(request.POST['password'], netid)
user.save()
要在登錄檢查是否有正確的密碼:
if crypt(password, email) == user.password:
# Grant acccess to the user's profile, etc.
問題是以下幾點。如果我使用變量netid = [email protected]
和request.POST['password'] = 'ABC123abc'
加密密碼,它可以正常工作。但是,當我嘗試登錄時,如果我使用密碼'ABC123abc[trailing_chars]'
,其中trailing_chars可以是任何有效的字符串,我仍然可以登錄。爲什麼會這樣?它構成了一個巨大的安全漏洞。
你不使用默認的[Django auth](https://docs.djangoproject.com/en/dev/topics/auth/)處理所有用戶/密碼的東西,包括散列密碼的原因是什麼? – jvc26