网站该如何存储用户的密码

news/2024/5/21 0:14:49/文章来源:https://blog.csdn.net/weixin_33700350/article/details/92252004

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

对那些有用户系统的网站来说,如果存储用户的密码是个问题。 大家都知道不能明文存储,这样一旦被脱了裤子,后果很严重, 简单的md5 sha加密也不可取......

通常在做网站的时候,如果有用户系统的话,那么就会涉及到保存用户信息的功能,

最基本的用户名、密码是一定要保存的,

那么如何保存密码,是我们每一个web开发者都应该思考的事情。

 

网上时不时的爆出一些网站被拖库的事情,其中不乏一些我们眼里的大网站,

令人大跌眼镜的是,有不少网站还在明文保存密码。

 

所谓明文,就是把用户密码原封不动的保存起来, 这种做法显而易见是不安全的,一旦你的数据库被拖库(拖库是指数据库内容被下载),那就将是灾难,

再加上用户的习惯性和惰性,很多用户在多个网站上都会使用同样的密码,这也会威胁到用户在其他网站上的安全。

还记得csdn600万,天涯4000万吗

 

明文保存的user表

 

idusernamepasswordcreatetime
10001  test1@hutuseng.com   iloveu1393151535
10002test2@hutuseng.comhutuseng123  1393134647  

 

 

所以我们不能明文保存,需要将用户密码加密,通过算法将明文密码进行编码,用我们的函数y=f(x)表示的话,

x表示原始密码,y表示加密后的密码,f 就是我们需要的加密函数,

加密函数的设计就看自己的了,比如一个简单的加密算法就是将原始密码倒排,

举例来说,你的原始密码为 abc123 ,那么加密之后的密码就是 321cba, 

这样黑客得到你的密码的话,如果直接使用 321cba登录是无法登录的。

 

 

简单加密保存的user表

idusernamepasswordcreatetime
10001  test1@hutuseng.com   uevoli1393151535
10002test2@hutuseng.com321gnesutuh  1393134647  

 


但是,这样的问题就是,如果黑客知道了你的加密算法f,他很容易就能够通过f和y来反推出x。

所以,我们需要找到一种不可逆的加密算法,也就是说即使黑客知道了y和f,也是无法反推出x的。

于是md5  sha1 sha256等哈希算法就出现了,通过这些哈希算法加密后的密码,很难反推了,这些算法的逻辑太过复杂,可以找专门的资料看看。

 

md5加密保存的user表

idusernamepasswordcreatetime
10001  test1@hutuseng.com   edbd0effac3fcc98e725920a512881e01393151535
10002test2@hutuseng.com46b54a029136318e9846e1c35f19db06   1393134647  



那么我们是不是就可以把密码直接用这类算法加密存储了呢?

当然,最好不要。理由就是,虽然这些算法不可逆,但是他们很容易被暴力破解(暴破)。

暴力破解的原理就是,y=md5(x), 既然无法反推,那么就挨个试,

通常黑客们会采用一些密码字典,挨个把密码用md5算法算一遍,看看结果跟y是否一致。

由于现在的电脑性能都很强,而且MD5算法本身也很快,所以如果你的密码设计不是特别复杂的话,是很容易破解的。

 

现在,暴力破解这一步都省了,很多人把很多常用的密码的md5啊 sha加密后的密码都对应起来了,做成了网站,

你只管上网去查就行了,一般简单的密码都可以瞬间破解。

比如 www.cmd5.com 之类的网站,你可以上去试试,edbd0effac3fcc98e725920a512881e0 解密以后是不是就是 iloveu 呢

所以,为了防止简单的密码被破解,很多网站会要求用户的注册密码设置的尽量复杂一些,比如最少8位,要包括大小写字母、数字、特殊符号等,这样就会大大的增加暴力破解的成本。

 

那么按照这个思路,

如果我们不限制用户的密码复杂度,可以允许用户使用诸如123456之类的简单密码的话,

那么我们就需要把用户的密码加工一下,变成一个复杂的密码,

一个很简单的思路就是,你可以给用户密码增加一个额外的字符串a,比如 88zz%%,

这样的话,加密算法就变成了, y=md5(x+a), 如果用户密码为123456的话,

那么加密后的密码则是 12345688zz%% 这个密码的md5值,能有效的防止这种通过暴力破解和一些网站碰撞破解。

 

这里的这个额外的字符串a,在英文的叫法里一般叫 salt,也就是盐的意思,给密码加点盐,让它更安全。

 

 

md5加salt加密保存的user表

idusernamepasswordcreatetime
10001  test1@hutuseng.com   d80dfeadf1181325a22cafba4d5b47821393151535
10002test2@hutuseng.com010b5eb7da3452f0a2281f185c30e8a2 1393134647  

 

 

当然,进一步讲, 我们也可以让每个用户的salt也都不一样,来进一步的增强安全性。

比如每个用户的salt都是他的 createtime 。

还可以通过多轮md5加密的方式, y=md5(md5(md5(md5(x)))) 

转载于:https://my.oschina.net/u/2357525/blog/702757

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_726342.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电脑上调试手机网站的几种方法

手机网站开发,最让人头疼的是网站的兼容问题,不同的手机可能会出现一些莫名的问题。手机网站常见问题及解决方案,我会在后面的文章陆续发表,大家可以看一下。 本文主要讲解电脑上如何调试手机网站: 一、安卓手机的调试…

推荐一个免费MP4转GIF的好用的在线编辑网站

地址如下: 原来那个网页版视频转换付费了,现在推荐使用“格式工厂” http://www.pcfreetime.com/formatfactory/CN/download.html

实用工具分享:一个比ps简单的免费简单易上手的良心在线海报设计网站,关键还没水印

1.说明: 工作中我相信或多或少都存在制作海报的需求,或者制作一个精美的软件安装说明等等(向下图一样),而我们大都不是专业平面设计师,花费时间折腾ps很明显得不偿失,并且ps的操作并不那么友好,那有没有简单几步就能制作出能看、好看、有创意的海报呢?答案是有的!!…

收藏一点有意思的网站

为什么80%的码农都做不了架构师?>>> http://shedingkong.lofter.com/?page2&t1465821964867 设定控 转载于:https://my.oschina.net/cpWeb/blog/792911

个人主页网页设计_优秀设计师都会逛的6大网站,你知道吗?

设计师最难熬的时间莫过于灵感的枯竭,所以平日里除了多搜集一些优秀的设计作品外,常备一些好用的设计网站真的很有必要,它的存在可以为我们缩短思考的时间,完善自己的思路,汲取别人优秀的创意点。now!小编为…

iis 站点内存高_Java处理高并发、高负载类网站的优化方法

一.-网站关注点之数据库-首先是数据库,这是大多数应用所面临的首个SPOF。尤其是Web2.0的应用,数据库的响应是首先要解决的。一般来说MySQL是最常用的,可能最初是一个MySQL主机,当数据增加到100万以上,那么,MySQL的效能…

php收费视频网站实现,超好影视网站PHP源码,一键采集视频资源,对接第三方免签码支付,能设置每个视频能否收费...

搭建环境:PHPapachermysql搭建环境:PHPapachermysql搭建环境:PHPapachermysql源码详情该源码是一套影视网站PHP完整源码,支持会员系统,支持后端一件采集视频资源,对接第三方免签支付【码支付】,…

《网站建设与网页设计从入门到精通Dreamweaver+Flash+Photoshop+HTML+CSS+JavaScript》——3.5 设置头信息...

本节书摘来自异步社区《D网站建设与网页设计从入门到精通DreamweaverFlashPhotoshop+HTMLCSSJavaScript》一书中的第3章,第3.5节,作者:何新起 更多章节内容可以访问云栖社区“异步社区”公众号查看。 3.5 设置头信息 文件头标签也…

什么是网站维护,做好网站维护需要具备哪些知识

网站维护对于相当一部分中小企业老板而言就是,找个网管来每天发发文章,保证网站正常运营,即可。其实真正的网站维护远远不止这些工作。 网站维护,一个好的网站需要定期或不定期地更新内容,才能不断地吸引更多的浏览者&…

【无删减】Python老司机收藏夹的17个国外免费学习网站

用Python编写代码一点都不难,事实上它一直被赞誉为最容易学的编程语言。如果你准备学习web开发, Python是一个不错的开始,甚至想做游戏的话,用Python来开发游戏的资源也有很多。这是快速学习这门语言的途径之一。许多程序员都把Py…

html5增强式网页体验,使用HTML5,CSS3和jQuery增强网站用户体验

记 得几年前如果你需要添加一些互动元素到你的网站中用来改善用户体验? 是不是立刻就想到了flash实现?这彷佛年代久远的事了。使用现在最流行的web技术 HTML5,CSS3和jQuery,同样也可以实现类似的用户体验。而且使用这些特性将会比…

在线SVG转png的网站

网址:https://svgtopng.com/zh/

如何搭建自己的网站别人可以直接访问

前言 最近因为想研究如何让别人访问我的网站信息,通过研究发现有1简便方法,方法1以自己的电脑为本地服务器(这种方式需要保持自己的电脑式中开机状态,对于我个人不划算),方法2租用一个云服务器&#xff08…

使用LXD搭建Web网站

欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 本文由独木桥先生 发表于云社区专栏 介绍 Linux的容器是Linux的一组进程,通过使用Linux内核功能与系统隔离。它是一个类似于虚拟机的构造,但它的更轻量级。您可以在同一台服务器上轻…

4个高质量自学网站每天只要5分钟,受益一生!

自学是一个漫长的过程,只要你能坚持就会有所收获,今天小编给大家免费分享4个高质量自学网站,每天只要5分钟,让你受益一生。 4个高质量自学网站: 1.51学习网 是一个专业的自学网站,提供我要自学网教程:自学CAD、自学pro…

jar包下载 、Web开发等程序员开发的常用网站

画图表的网站:https://www.echartsjs.com/index.html 下载jar包的地址:https://mvnrepository.com/ 清华镜像:https://mirrors.cnnic.cn/apache/ 前端框架网站: ZUI框架: http://zui.sexy/ bootstrap : https://www.b…

这几个网站的确好用

文本类: 1.菜鸟教程 各种基础教程,可在线敲代码 2.W3school 前端学习比较全 视频类 (1)mooc\腾讯课堂 (2)哔哩哔哩 (3)我要自学网 互动式 (1)腾讯云、阿…

小白如何快速建立一个属于自己的网站

推荐两种方法: 一、使用自己的服务器搭建网站 (1)购买域名 (2)使用虚拟机搭建服务器或者使用云服务器(推荐,价格比较优惠而且方便) (3)部署服务器&#xff0…

html空格转义符nbsp_前端开发代码里给SEOer挖的坑之一:代码里的转义

大家都知道什么是转义字符吧,就像空格,在页面代码用转义字符为: 即可在前端显示一个空格的位置出来,但实际代码里,搜索引擎确识别成了字母,这个坑影响还是挺大的,下面看一下实际的案例。代码里的…

文本匹配_「淄博SEO」网站确诊之锚文本链接

SEO网站确诊之锚文本链接超链接前进整体权重,而锚文本看似是主要前进关键词排名,但是,它其实是对这个链接进行一个描绘,就像一个网站写了标题、关键词、页面描绘这些,一个网站没写这些,一起告诉搜索引擎、用…