数据库中如何安全储存用户的重要信息/密码?

吃猫的鱼
2022-10-02 / 1 评论 / 486 阅读 / 正在检测是否收录...

KYP8_H28(OTGJ{4`HO3@99G.png

数据库中如何安全储存用户的重要信息/密码?

怎么样才能安全,有效地储存这些私密信息呢,即使数据库泄露了,别人也无法通过查看数据库中的数据,直接获取用户设定的密码。这样可以大大提高保密程度。

想要安全地储存用户的信息,密码,加密是肯定少不了的。

本文用php对其做简单的演示!

首先,先尝试以下最简单的不加密储存形式。
[D0BG4(Y)($299@UEQ@QN4P.png
运行后显示结果:
我们可以看到,不加密,储存进数据库后,密码一眼就可以看穿,万一数据库被入侵,用户的账户财产,隐私等都会受到威胁!
~Y`77CAI(3UEFZ~B{CEWIND.png

接下来试试简单的加密处理

原理是,将用户设置的隐私信息,使用base64进行简单的单次加密,代码如下图所示!
0$B(3@5E_`(@WHA%B7%}1.png
下面是运行结果:
[BNZIV7IKCJRHQLMLCW9M7.png
可以看到,通过简单的base64加密后的密码,已经变得不可读。目前达到了防小白的境界,一般普通人看到,概率是无法成功破解的。
但是只要遇上稍微会一点技术的人,试几次就能解开。
我们都知道,base64是一种简单的,可逆的加密形式。因此这样加密储存方式,并没有过多的作用!

接下来试试进阶加密方式

为了使加密不可逆,我们就需要用不可逆的加密方式,我们知道,MD5加密方式是不可逆的。


下面是用md5加密的代码示例
5~WOIR$WV8SYUTUK9.png
我们可以看到,用md5加密后的密码已经是乱序,并且由于md5加密的不可逆性,无法对其进行解密。
$85P03<code>Y2$[2U8~$</code>HX$K[0.png
但是,单纯地只对用户设置的密码进行md5加密,是不足以保密用户隐私的。
如果用户使用弱口令密码,那么其密码加密后的md5值,也是不安全的。
例如:
{0S_6L@30E63U$HB1PV1AFS.png
这是一个网上找的,声称有着90万亿条md5加密数据的库。
我们试着用刚刚用md5加密后的密文,看看它能不能破解:
723d505516e0c197e42a6be3c0af910e
R5)ET8VPA4W4D89BYXY(BM.png
果然,这种弱口令密码一下子就被找出来了。

加密算法再次升级

为了使用户可能输入的密码为弱口令,我们可以在用户的设置的密码前面加上一串比较复杂的密钥,这样可以增加密码md5加密前的复杂性。
FXEW5CEONV@FQ_O2P$`}6{W.png
代码运行结果:
@KIDH[4AW@}LFQ~A8ZOO3M0.png
然后我们再将这个加密后的形式,看看还能不能被破解

}A~84~S(${)$`G}F$)3@BOJ.png
不出所料,库中没有这个数据。

验证密码环节

在验证用户密码的时候,我们只需要再次将该加密过程执行一遍,然后将得出的md5加密后的结果与我们数据库中的MD5结果对比,即可验证用户是否输入正确的密码。


总结

通过我们上面所述,即可实现将用户输入的密码,用一个比较安全的形式储存在数据库里面,进而防止当数据库泄露或者被入侵的时候,用户数据遭到入侵,遭受损失!


2

评论 (1)

取消
  1. 头像
    Android · QQ Browser

    表情

    回复
友情链接 文章阅读: 网站地图