用户信息安全性设置_使用werkzeug散列密码

1. why?

  • 设计 Web 程序时,人们往往会高估数据库中用户信息的安全性。
  • 大多数用户都在不同的网站中使用相同的密码,获得密码之后, 访问用户在其他网站中的账户。

2. what?

  • 用户密码的安全,关键在于不能存储密码本身,而要存储密码的散列值。

3. how?

  • 计算密码散列值的函数接收密码作为输入,使用一种或多种加密算法转换密码,最终得到一个和原始密码没有关系的字符序列。
  • 核对密码时,密码散列值可代替原始密码,因为计算散列值的函数是可复现的:只要输入一样,结果就一样。

Werkzeug 中的 security 模块能够很方便地实现密码散列值的计算。

  • generate_password_hash(password, method= pbkdf2:sha1 , salt_length=8)
  • check_password_hash(hash, password) :

4. test?

@property
def password(self):
    """u.password"""
    raise AttributeError("密码属性不可以读取")

@password.setter
def password(self, password):
    """u.password = xxx """
    self.password_hash = generate_password_hash(password)

def verify_password(self, password):
    """验证密码是否正确"""
    return check_password_hash(self.password_hash, password)

你可能感兴趣的:(用户信息安全性设置_使用werkzeug散列密码)