zoukankan      html  css  js  c++  java
  • 论前端信息加密必须性(要不要加密、如何加密)

    一、序言

      最近,关注了一下关于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 安全学,东西太多,也待完善。如果文中有错误,还望指出!

  • 相关阅读:
    Oracle查询今天的数据(昨天、本周...)
    Windows添加删除 route
    大三寒假学习进度(九)
    大三寒假学习进度(八)
    大三寒假学习进度(七)
    大三寒假学习进度(六)
    大三寒假学习进度(五)
    《软件架构师应该知道的97件事》阅读笔记(一)
    大三寒假学习进度(四)
    大三寒假学习进度(三)
  • 原文地址:https://www.cnblogs.com/pengfei-nie/p/9593692.html
Copyright © 2011-2022 走看看