密码的安全存储

以前在CSDN密码暴库的时候,刚好要写作业,想了想怎么存密码才安全的问题,顺便实现加密。那到底用户的密码怎么存才安全呢?这个我也不知道,好像都是时间问题。
    我的做法是:
                 1.注册,当用户输入自已想要的用户名,密码后,用JS对输入的密码进行初次加密,具体方法可以百度
                 2.用户点击注册时,将用户名和加密后的密码密文发送到服务端。
                 3.服务端接收到用户名和密文密码后 ,先生成一个随机的摘要(其实就是MD5的种子),然后与公司内部才能取得的摘要(也是一个字符串)和官密文密码(共3部分)用MD5或SHA(建议)进行再一次加密,形成最终密文密码。
                 4.然后将用户名,随机摘要,最终密文放入数据库中。(注意小心保管公司内部的字符串)
                 5.怎么验证?用户登录的时候,做1.2.3步骤。将形成的结果与数据库的内容进行比对。一致则验证通过,否则拒绝登录。
    思考:  1.用户注册之时,服务端是不知道用户输入的是什么密码的,在网络上传输的是密文。其实,这应该算一纸墙。
黑客如果拦截到用户登录时发送的用户名和密码密文,他直接将该信息发送到服务端就可以仿冒用户登录了。只是需要的技术手段要复杂一些。比直接能看到密码好一点点。但如果人家都知道怎么抓包了,可能这一点事,他不会觉得麻烦。进一步优化的效果,可以结合登录人的IP地址,浏览器信息对密码进行加密码,在服务端根据登录数据包的源IP,浏览器等信息,对仿冒数据包进行过滤。
                  2.网站如果要支持多种客户端,比如手机时,可能有的手机无法支持js文件的时候,就只有向服务端传送明文了,然后服务端还必须进行与js文件相同的加密后,再执行后面的操作。可以用nodejs之类的,或干脆重新用服务端语言重新实现js加密算法。
                   3.公司内部的开发人员或数据库管理人员无法知悉用户的密码,这是很显然的事,所以一定程度上避免了公司人员离职时搞什么小破坏,把用户信息给泄露了,貌似这个是法律和道德问题,不管。
                   4.为什么有一个公司内部才能取得的摘要?这个是为了最后一次的保险了,那一天,你的数据库同CSDN一样被暴了。。。。加密算法时确发现还有一个未知数,破解的人头就应该大了吧,呵呵。至于怎么保存这最后一把钥匙呢?没想清楚。这个东西防的是公司外部的人,而不是公司内部的人吧。
                   5.所有的加密均是不可逆的。是的,因为我用的MD5和SHA,密码这种东西,只有用户知道,就行了。而且验证的时候又不需要最初的密码,只需要一个MD5或SHA值就行了,是吧?
                   6.我想多了,人家都暴你库了,还要你的用户密码来做甚?直接把用户资料DOWN下去就是了,干嘛非要去破你的密码?搞好数据库安全才是真的。少在程序上面写几个漏洞,就好了。

 

转载于:https://my.oschina.net/wamdy/blog/90892

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值