2012-09-19 157 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更可取。 –