2012-09-19 153 views
0

最近我遇到一个项目,它使用MD5哈希在登录时发布用户名和密码..但是我看到的有点奇怪,他们已经同时使用Applet和JavaScript进行散列,就像Applet不在那里一样,那么JavaScript的作品。JavaScript MD5哈希与Java Applet MD5散列?

的代码如下:

var username=document.getElementById('username'); 
var password=document.getElementById('password'); 
try { 
    encUsername = appletObject.encryptMessage(username); 
    encPassword = appletObject.encryptMessage(password); 
} catch (e) { 
    encUsername = hex_md5(username); 
    encPassword = hex_md5(password); 
} 
//post encUsername & encPassword for validation 
  1. 是此方法仅用于浏览器兼容性JS和小程序,或者任何优势小应用程序上的JavaScript MD5哈希?
  2. 在这种情况下applet是否有任何安全优势?
+0

这就是这意味着什么。在发送密码之前,您确实不需要加密。 –

回答

2

在客户端散列密码和用户名(?)不起任何安全作用。在服务器上存储散列密码的最大好处是,如果密码数据库受到威胁,则不会泄漏实际有效的密码。但是,当密码在客户端被散列时,散列实际上是一个密码 - 一个存储在服务器上的密码,因此没有安全优势。

关于使用小程序,我不确定小程序的实现是什么,但它似乎没有提供任何使用内置函数的额外好处。

+0

只要服务器对结果应用一轮(或多轮)散列,客户端散列可以作为一种最小的防嗅探措施来实现,并且有一种方法可以知道客户端何时不散列(如JS关闭),以便可以进行补偿。当然,如果这是一个选项,HTTPS更可取。 –