最近,关注了一下关于web端登陆、传输数据加密的情景。发现了一些有意思的事情。某互联网金融公司程序员作登陆验证,先来一发md5加密,而后就自豪的说个人登陆是加密的,外人没法破解,绝对保障用户的信息安全。过后博主发现,my gold,全站http协议,仅仅登陆使用了md5加密。 ps: 偷偷笑...前端
接下来,博主分享一些本身知道的东西,了解也不深,你们看看,了解一下就好。程序员
大体列了一个目录,道友们根据本身状况来看哈。有些知识仍是须要铺垫一下的。web
1. 首先,咱们先来对这2种传输协议作个简单了解。网站
http: 超文本传输协议,用于Web浏览器和网站服务器之间传递信息。明文方式发送内容,不提供任何方式的数据加密,入侵者能够抓包直接获取传输的报文,进而获取用户数据。
https: 安全套接字层超文本传输协议,它在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通讯加密。
分为两种:一种是创建一个信息安全通道,来保证数据传输的安全;另外一种就是确认网站的真实性。ui
2. 而后,咱们来比较一下这2种协议加密
a、https协议须要到ca申请证书,通常免费证书较少,于是须要必定费用。 而http不要钱
b、http是超文本传输协议,信息是明文传输,https则是具备安全性的ssl加密传输协议。
c、http和https使用的是彻底不一样的链接方式,用的端口也不同,前者是80,后者是443。
d、http的链接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
3. 在这简单介绍一下https的一个步骤
a、客户使用https的URL访问Web服务器,要求与Web服务器创建SSL链接。
b、Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
c、客户端的浏览器与Web服务器开始协商SSL链接的安全等级,也就是信息加密的等级。
d、客户端的浏览器根据双方赞成的安全等级,创建会话密钥,而后利用网站的公钥将会话密钥加密,并传送给网站。
e、Web服务器利用本身的私钥解密出会话密钥。
f、Web服务器利用会话密钥加密与客户端之间的通讯。
看到这,相信你们应该对这2种协议已经有个比较清晰的印象了。有人就说了,这https这么牛逼,彷佛这个加密问题已经解决了。可是远没那么简单,https虽然安全,可是它对于黑客攻击、服务器劫持啥的,仍是形同虚设,没多大用处。并且这些提供证书的机构、组织啦,说白了仍是人,人家有你的证书,这些人能够拿着你的证书光明正大的解密。
ps: 好了,闲话说到这,这块就是让你们了解一下咱们平时用的传输协议。
一般在web端的数据传输中,大部分数据是明文,不须要加密的。博主认为须要加密的数据分2种
1. 用户的登陆信息。 (帐号、密码。。。)
2. 用户的私密信息。(姓名、银行卡号、家庭住址。。。)
针对这2种数据,咱们对加密的要求也是有所区别的,后者重要性稍弱了前者
如今咱们知道,http协议是明文传输,只要别人一抓包就能够获取到传输的报文,不少人会问,是否是http传输时前端都不须要进行数据加密了呢? 这个观点是大大错误了,咱们经过下边几点来分析一下,即使不安全也要加密的必要性
1. 前端对用户密码进行哈希值加密,好比说 md5 ,而后别人抓包,能够模拟登录了。可是他仅仅是能登录,他并不知道你的源密码是啥,他截获的是md5加密过的密文,这样就大大下降了社会学攻击。(解释一些,社会学攻击。你们习惯性将各个平台帐号设置为一个或者几个密码,方便记忆,人家拿了你一个,就去试别的,Duang!爆炸了!)
2. 前端加密也有必定安全性。咱们简单的加密,会被抓包,那咱们能够将加密变得复杂一些。使这个直接抓包没法登录,或者不容易登录。
继续上面的话题,咱们怎么加密,让数据传输更安全,下面举几个例子
1. 使用 https。 你甚至能够用https登录,完事再重定向到http的页面,保证你页面加载的流畅性
2. 就用 http。将 密码+时间戳 加密后传输,服务端解密,并按照时间戳3s有效的方式容许登录.这样也能增强安全性 ps:3s 是我 yy 的哈
3. 仿照 qq 网页版登陆的模式
function getEncryption(password, uin, vcode, isMd5) {
var str1 = hexchar2bin(isMd5 ? password : md5(password));
var str2 = md5(str1 + uin);
var str3 = md5(str2 + vcode.toUpperCase());
return str3
}
仿照qq登陆的模式。咱们能够在打开登陆界面的时候,同时传输一个图形验证码,验证码在后台有惟一性、时效性、一次性 的存储。这样登陆时将帐号、密码、验证码、加密方式一同使用某不可逆加密方式加密,通常就用md5吧,这样服务端用相同的方式加密,比对加密后的密文判断登陆。这样即使知道你的加密代码,也不容易攻破。
4. 还有一种就是如今最简单的,直接手机号+验证码登陆,安全有效、简单。固然信息一样须要加密。
以上就是全部内容了,介绍的比较浅,适合你们了解。正儿八经的web 安全学,东西太多,也待完善。若是文中有错误,还望指出!