正如在FFIEC(Federal Financial Institutions Examination Council)致金融機構的信函(FIL-103-2005,2005年10月12日)“Authentication in an Internet Banking Environment” 中指出的:“在網上銀行環境中,未經授權的或未正確識別的用戶可能會進行欺詐、泄露客戶信息、損壞數據或造成不可能實施的合約,從而給金融機構造成經濟損失和名譽損失。” 這封信函強調了網絡驗證機制的重要性:“風險評估應該根據與網上客戶可用的各種產品和服務相關的風險決定有效的驗證戰略。”因此,必須建立健壯的驗證管理過程來實現驗證和授權,這是成功實現安全的軟件解決方案的關鍵因素。
(3)為了便于記憶,密碼應該盡量是有意義的內容,但需插入其他字符或者諧音,如“just for you”可以設置為“juST4_U”。同時可以在長度上進行拉伸,如“shezhimima”可以變成“s_he_zhi_mimA”(相隔一定間隙插入符號,并且將特定位置的字母大寫),又如“mypassword”可以變成“M。Y。P。A。S。S。W。O。R。D-1”。或者可使用數學運算符號來設置密碼,如“5*5+5=30? Yes! ”。
function checkPassword(pwdinput) {
var maths, smalls, bigs, corps, cat, num;
var str = $(pwdinput).val()
var len = str.length;
var cat = /.{16}/g
if (len == 0) return 1;
if (len > 16) { $(pwdinput).val(str.match(cat)[0]); }
cat = /.*[\u4e00-\u9fa5]+.*$/
if (cat.test(str)) {
return -1;
}
cat = /\d/;
var maths = cat.test(str);
cat = /[a-z]/;
var smalls = cat.test(str);
cat = /[A-Z]/;
var bigs = cat.test(str);
var corps = corpses(pwdinput);
var num = maths + smalls + bigs + corps;
if (len < 6) { return 1; }
if (len >= 6 && len <= 8) {
if (num == 1) return 1;
if (num == 2 || num == 3) return 2;
if (num == 4) return 3;
}
if (len > 8 && len <= 11) {
if (num == 1) return 2;
if (num == 2) return 3;
if (num == 3) return 4;
if (num == 4) return 5;
}
if (len > 11) {
if (num == 1) return 3;
if (num == 2) return 4;
if (num > 2) return 5;
}
}
function corpses(pwdinput) {
var cat = /./g
var str = $(pwdinput).val();
var sz = str.match(cat)
for (var i = 0; i < sz.length; i++) {
cat = /\d/;
maths_01 = cat.test(sz[i]);
cat = /[a-z]/;
smalls_01 = cat.test(sz[i]);
cat = /[A-Z]/;
bigs_01 = cat.test(sz[i]);
if (! maths_01 && ! smalls_01 && ! bigs_01) { return true; }
}
return false;
}
效果如圖4-21所示。
圖4-21 jquery實現密碼強度的智能判斷特效
4.3.4 采用多重安全機制實現多因素驗證
盡管多因素身份驗證和多層身份驗證是有優勢的,但是大多數解決方案使用相同的底層網絡安全機制實現它們,這會造成問題,在安全需求嚴格的環境中尤其如此。例如,大多數基于Web的銀行系統使用SSL/TLS或HTTPS協議(Secure HyperText Transfer Protocol)作為底層網絡安全機制實現基本的兩因素身份驗證。
為了解決這個問題,這里推薦一種方法。實現多因素身份驗證的系統應該對不同的因素使用不同的底層安全機制,這會顯著降低風險。例如,如果兩因素身份驗證的第一個因素使用Kerberos作為底層網絡安全機制,第二個因素使用LIPKEY(一種使用SPKM的Low Infrastructure Public Key Mechanism, RFC 2847)或NTLM(NT LAN Manager,一種Microsoft身份驗證協議)作為底層網絡安全機制,那么黑客必須破解兩種完全不同的安全機制,這加大了入侵的難度,降低了風險。這種方法通過降低風險增強了系統的總體安全性。對于實現多層身份驗證的系統,也是如此。