多事之夏,最近黑阔大牛们经常光顾我们网站,不甚荣幸,也让我们老大没少加班。上指纹系统,开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
时间: 2024-11-06 09:50:59