多事之夏,最近黑阔大牛们经常光顾我们网站,不甚荣幸,也让我们老大没少加班。上指纹系统,开safe_mode,重新编译PHP等等,安全警戒一度提到最高。

在用户登录方面,为了用户密码安全,我们在用户输完密码点击提交后,js自动给密码加上MD5,然后再传输到服务器。这样即使密码被嗅探到了,也是加密后的密码。

先看代码:

 1 <script>
 2 functionMD5(){
 3 //MD5加密算法,细节省略
 4 }
 5  
 6 functioncheck(){
 7 //提交前将用户的密码用MD5加密
 8 form.password.value=MD5(form.password.value);
 9 returntrue;
10 }
11 </script>
12 <form onsubmit="return check();">
13 用户名:<input type="text"name="username"><br>
14 密码:<input type="password"name="password"><br>
15 <input type="submit"value="提交">
16 </form>

 

 

假设浏览器已经开启了保存密码功能,用户在输完账号密码并提交后,点击保存密码。在这一过程中,主要发生了如下几个事件:

用户填写用户名密码 → 点击提交 → 触发check() → 将密码输入框的密码MD5加密 → 将数据提交到服务器

我们的浏览器是在哪一步记录了密码呢?

第二步,在点击提交按钮时,浏览器抓取了输入框的值,并保存下来,而后面发生的事情,它并不关心。 那么我们下次登录时,会发现密码输入框仍然是明文密码(虽然我们看不到,但可以通过密码长度判断)。

但是,只有在360浏览器中,保存的密码是长长的32位MD5加密后的密码。也就是说,360浏览器并不是在用户点击提交后记录输入框的内容,而是在最后一步,将数据提交到服务器时,360浏览器截取了这部分数据,并保存下来。

因为密码存在用户自己电脑上,并且不容易查看,所以从安全性考虑,不管保存明文还是密文,没什么区别。但是从保存密码的方式来看,360通过截取用户数据来记录密码,实在太流氓了。

91ri.org:文章写的很清楚了 就不说了

link:http://www.zyday.com/archives/567.html

posted on 2017-07-13 13:40  风又奈何  阅读(1462)  评论(0编辑  收藏  举报