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?
数据库中保存密码不是以铭文方式保存,而是经过哈希加密