mirror of
https://github.com/Mailu/Mailu.git
synced 2025-03-03 14:52:36 +02:00
Improve the token storage format
shortcomings of the previous format included: - 1000x slower than it should be (no point in adding rounds since there is enough entropy: they are not bruteforceable) - vulnerable to DoS as explained in https://passlib.readthedocs.io/en/stable/lib/passlib.hash.sha256_crypt.html#security-issues
This commit is contained in:
parent
eb7895bd1c
commit
00b001f76b
@ -493,10 +493,18 @@ class Token(Base):
|
||||
ip = db.Column(db.String(255))
|
||||
|
||||
def check_password(self, password):
|
||||
return hash.sha256_crypt.verify(password, self.password)
|
||||
if self.password.startswith("$5$"):
|
||||
if hash.sha256_crypt.verify(password, self.password):
|
||||
self.set_password(password)
|
||||
db.session.add(self)
|
||||
db.session.commit()
|
||||
return True
|
||||
return False
|
||||
return hash.pbkdf2_sha256.verify(password, self.password)
|
||||
|
||||
def set_password(self, password):
|
||||
self.password = hash.sha256_crypt.using(rounds=1000).hash(password)
|
||||
# tokens have 128bits of entropy, they are not bruteforceable
|
||||
self.password = hash.pbkdf2_sha256.using(rounds=1).hash(password)
|
||||
|
||||
def __str__(self):
|
||||
return self.comment
|
||||
|
Loading…
x
Reference in New Issue
Block a user