pengfei-nie

一、序言

  最近,关注了一下关于web端登录、传输数据加密的情景。发现了一些有意思的事情。某互联网金融公司程序员做登录验证,先来一发md5加密,然后就自豪的说我的登录是加密的,外人无法破解,绝对保障用户的信息安全。事后博主发现,my gold,全站http协议,仅仅登录使用了md5加密。   ps: 偷偷笑...

  接下来,博主分享一些自己知道的东西,了解也不深,大家看看,了解一下就好。

  大致列了一个目录,道友们根据自己情况来看哈。有些知识还是需要铺垫一下的。

 

二、 目录  

  1. http 与 https

  2. 加密信息分类(博主自己分的)

  3. web端加密的问题和作用

  4. 如何安全的加密(相对的提高安全性)

 

三、http 与 https

  1. 首先,我们先来对这2种传输协议做个简单了解。

    http: 超文本传输协议,用于Web浏览器和网站服务器之间传递信息。明文方式发送内容,不提供任何方式的数据加密,入侵者可以抓包直接获取传输的报文,进而获取用户数据。
    https: 安全套接字层超文本传输协议,它在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
      分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

  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种数据,我们对加密的要求也是有所区别的,后者重要性稍弱了前者

 

五、 web端加密的问题和作用

  现在我们知道,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 安全学,东西太多,也待完善。如果文中有错误,还望指出!

 

分类:

技术点:

相关文章: