如何在数据库中安全地存储用户密码
如何在数据库中安全地存储用户密码账号密码登录是最常见的身份认证方式之一,但“能登录”并不代表“存得安全”。很多系统在功能上完成了登录,实际上却把用户密码暴露在了极高风险之下。 这篇文章想回答一个基础但非常重要的问题:如果要在数据库里存储用户密码,什么做法才算相对安全? 最糟糕的做法:直接存明文密码最早也最危险的实现方式,是直接把用户名和明文密码存进数据库。 登录时,后端执行类似这样的查询: 1234select count(*)from userwhere username = ${username} and password = ${input} 如果能查到记录,就认为密码正确。 这种做法的问题非常明显: 数据库一旦泄露,所有用户的密码都会被直接看到; 数据库管理员、运维人员或有读取权限的人也能轻易查看密码; 很多用户会在多个网站复用密码,一次泄露可能波及多个平台; 即使没有人恶意利用,要求用户全量修改密码本身也是巨大的成本。 所以,密码绝不能以明文形式存储。 这是最基本的安全常识。 第二阶段:只存密码的 MD5 值很多系统会进一...




