>  기사  >  백엔드 개발  >  网站注册登陆,密码怎么进行加密

网站注册登陆,密码怎么进行加密

WBOY
WBOY원래의
2016-06-13 12:01:221697검색

网站注册登陆,密码如何进行加密?
在网上看了好多这方面的文章,都说客户端的密码,登陆时要用md5加密后发给服务器,然后服务器再和数据库中的salt和加密后的密码进行比较

不太明白如果要是这样做的话

假设A用户的用户名为abcd,密码为123456. md5加密后是:e10adc3949ba59abbe56e057f20f883e
对于黑客而言,他偶然获取了用户名:abcd,密码:e10adc3949ba59abbe56e057f20f883e

此时他不用知道abcd的密码是123456,同时也不需要理解e10adc3949ba59abbe56e057f20f883e 是怎样生成的,他只需要输入用户名:abcd,然后密码:e10adc3949ba59abbe56e057f20f883e 来调用服务就可以登录了。

如何避免这种情况的出现呢?
------解决方案--------------------
黑客怎么会知道用户名abcd 和密文?
------解决方案--------------------
客户端不需要加密
只需要按正常的用户名和密码登入就可以了。

然后服务器端,对密码执行 md5(md5(密码)+salt) 操作,生成加密后的密码。salt从数据库中获取。
再与数据库中加密的密码比对。
相同则登入成功,否则登入失败。

这种做法的好处是,即使数据库被黑客进入了,也不能知道用户的明文密码。
------解决方案--------------------
服务端的密码是这么比较的

if ($row['pwd'] == md5($_POST['pwd'])){
//
}
就算别人知道MD5之后的密码,但是来到服务端,又需要再加密一次的,或者加密多次再比较。

------解决方案--------------------
黑客即使黑进你的数据库,获得了你的会员的用户名与加密过的密码,因为md5的加密基本上是不可逆的,所以黑客是无法调用你已知的服务实现登陆操作的。

但是一层md5加密也不是很安全,很多网站都提供md5的解密。建议多次md5加密或者添加你自定义的字符串然后在md5加密(md5(user_passwd.your_defined_string))。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.