能否在SQLite数据库浏览器查看密码?Flask站点密码找回问询
关于Flask Wiki站点遗忘密码后的处理办法
嘿,咱们先把核心点说清楚:你数据库里存的那个pbkdf2:sha256:50000$trQqtDeG$fb666b434b1920c814101fd3afedf75c9e21e2eebbfe7e6aa9fe4aec3d69b1e3是单向哈希值,这种加密方式的核心就是不可逆——也就是说,你绝对没法从这个字符串还原出原密码poop。这其实是刻意的安全设计,就是为了防止数据库泄露后,用户的原密码被轻易窃取。
那遗忘密码后该怎么解决?分两种场景给你说:
如果你是站点开发者
直接更新数据库的哈希值(快速解决):
用Flask自带的密码哈希工具生成新密码的哈希,替换数据库里对应用户的密码字段就行,步骤大概是这样:- 打开Flask的shell环境:
flask shell - 导入哈希生成函数:
from werkzeug.security import generate_password_hash - 生成新密码的哈希:
new_hash = generate_password_hash('你的新密码') - 找到你的用户记录(假设用SQLAlchemy ORM):
user = User.query.filter_by(username='你的用户名').first() - 更新并提交:
user.password = new_hash,然后执行db.session.commit()
- 打开Flask的shell环境:
添加密码重置功能(长期解决方案):
要是不想以后再碰到这种麻烦,最好给站点加上邮箱/手机号验证的密码重置流程——用户输入注册邮箱,系统发送重置链接,点击后就能设置新密码,这是正规站点的标准安全操作。
如果你是普通用户(不过你能直接看数据库,大概率是开发者啦)
如果站点本身已经有密码重置入口,直接点进去走流程就行:输入注册时留的邮箱或手机号,接收重置链接后设置新密码就搞定了。
最后再强调一遍:单向哈希的设计就是让原密码无法被还原,所以遗忘密码后只能通过重置的方式设置新密码,这也是保障你账号安全的必要机制。
内容的提问来源于stack exchange,提问作者Shekambo jan




