Flask-用户管理

本文介绍了在Flask应用中如何利用Werkzeug库的security模块来安全地处理用户密码。通过generate_password_hash()函数生成密码散列值,并使用check_password_hash()检查密码与散列值的匹配性,确保即使数据库被攻击,原始密码也无法轻易被还原。示例展示了同一密码多次散列的结果虽然不同,但能够正确验证密码。
摘要由CSDN通过智能技术生成

引用:

第 8 章:用户认证 - Flask 入门教程

安全存储密码

把密码明文存储在数据库中是极其危险的,假如攻击者窃取了你的数据库,那么用户的账号和密码就会被直接泄露。更保险的方式是对每个密码进行计算生成独一无二的密码散列值,这样即使攻击者拿到了散列值,也几乎无法逆向获取到密码。

Flask 的依赖 Werkzeug 内置了用于生成和验证密码散列值的函数,werkzeug.security.generate_password_hash() 用来为给定的密码生成密码散列值,而 werkzeug.security.check_password_hash() 则用来检查给定的散列值和密码是否对应。使用示例如下所示:

from werkzeug.security import generate_password_hash,check_password_hash

import unittest


class MyTest(unittest.TestCase):


    def test_password(self):
        password = 'my_password_123'

        p_hash_1 = generate_password_hash(password)
        print("p_hash_1: ", p_hash_1)

        p_hash_2 = generate_password_hash(password)
        print("p_hash_2: ", p_hash_2)

        print("password 与 p_hash_1 是否相等: ",check_password_hash(p_hash_1, password))
        print("password 与 p_hash_2 是否相等: ",check_password_hash(p_hash_2, password))


'''
p_hash_1:  pbkdf2:sha256:260000$MhRcKnKgUDUUclp6$3906c09a8476c5c82f5442e8fed4ac2c0ba1027b13dd1621ca8fc0e876ad3f52


p_hash_2:  pbkdf2:sha256:260000$2mQbaSTwXxSFg1FT$c653be4b90d8f32340ae8e3975bb29d18f77b38915e93c7f0be94c0acc76f9be


password 与 p_hash_1 是否相等:  True

password 与 p_hash_2 是否相等:  True
'''

同一密码每次生成散列值不同, 但是根据算法还是可以判断出是否与原密码相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值