JavaScript口令檢查器
發(fā)表時(shí)間:2024-06-04 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]我曾經(jīng)介紹過(guò)一種保護(hù)用戶(hù)口令的方法。但是有些讀者提意見(jiàn)說(shuō),許多用戶(hù)使用很容易被猜出來(lái)的口令,因此有很多口令是不值得去保護(hù)的。為什么在用戶(hù)使用他們的寵物的名字和他們的生日作為口令時(shí)卻盡力精心的保護(hù)這些口令呢?你能夠而且應(yīng)該執(zhí)行一種更強(qiáng)的口令策略。在本期專(zhuān)欄,我將告訴你如何使用javascript。 ...
我曾經(jīng)介紹過(guò)一種保護(hù)用戶(hù)口令的方法。但是有些讀者提意見(jiàn)說(shuō),許多用戶(hù)使用很容易被猜出來(lái)的口令,因此有很多口令是不值得去保護(hù)的。為什么在用戶(hù)使用他們的寵物的名字和他們的生日作為口令時(shí)卻盡力精心的保護(hù)這些口令呢?你能夠而且應(yīng)該執(zhí)行一種更強(qiáng)的口令策略。在本期專(zhuān)欄,我將告訴你如何使用javascript。
口令策略是一組規(guī)則,用來(lái)確定哪些口令可以接受,哪些不能接受。典型的策略要求口令長(zhǎng)度為八個(gè)字符,包含至少一個(gè)字母、一個(gè)數(shù)字和一個(gè)特殊字符,而且這些字符都應(yīng)該是可打印字符。
這個(gè)口令檢查腳本執(zhí)行三項(xiàng)檢查。如果三項(xiàng)中有任何一項(xiàng)不符合要求,它都會(huì)向用戶(hù)提示錯(cuò)誤。
確保口令長(zhǎng)度符合規(guī)定。
確保口令中只有字母、數(shù)字和特殊字符。
確保口令中至少有一個(gè)字母、一個(gè)數(shù)字和一個(gè)特殊字符。
首先在頭部< head> < /head>中加入以下內(nèi)容:
< SCRIPT LANGUAGE="javascript" SRC="pwpolicy.js">
< /SCRIPT>
< SCRIPT LANGUAGE="javascript" SRC="pwchecker.js">
< /SCRIPT>
你可以像下面這樣設(shè)置“選擇標(biāo)識(shí)和口令”按鈕的onClick句柄,以調(diào)用口令檢查腳本:
< INPUT TYPE="BUTTON" NAME="pwButton" VALUE="Select ID and Password"
onClick="checkPassword(´pwForm´,´pwField´)">
checkPassword()函數(shù)在pwchecker.js中定義。第二個(gè).js文件pwpolicy.js指定口令策略。
// Passwordchecker
// This is the main password checking function.
function checkPassword(formName,passwordFieldName) {
pw = window.document.forms[formName].elements[passwordFieldName].value
if(checkPasswordLength(pw))
if(checkPasswordCharsAllowed(pw))
if(checkMinPasswordChars(pw))
window.document.forms[formName].submit();
}
// Check to make sure the password is at least minChars characters long.
function checkPasswordLength(pw) {
if(pw.lengthalert("Your password is less than "+minChars+" characters!")
alert("You must choose a password that is at least "+minChars+" characters in length.")
return false
}
return true
}
// Check to make sure that all of the characters in the password are allowed.
function checkPasswordCharsAllowed(pw) {
for(var i=0;ivar ch = pw.charAt(i);
if((isAlpha(ch) && !lettersAllowed)) {
alert("Your password contains a letter!")
alert("Letters are not allowed in passwords.")
return false
}else if(isNumber(ch) && !numbersAllowed) {
alert("Your password contains a number!")
alert("Numbers are not allowed in passwords.")
return false
}else if(isSpecial(ch) && !specialAllowed) {
alert("Your password contains a special character!")
alert("Special characters are not allowed in passwords.")
return false
}else if(!isAlpha(ch) && !isNumber(ch) && !isSpecial(ch)) {
alert("Your password contains a non-printable character!")
alert("Non-printable characters are not allowed in passwords.")
return false
}
}
return true
}
// Check to make sure the password has the required number of alphabetic, numeric, and
// special characters.
function checkMinPasswordChars(pw) {
var alpha = 0
var numeric = 0
var special = 0
for(var i=0;ivar ch = pw.charAt(i)
if(isAlpha(ch)) ++alpha
else if(isNumber(ch)) ++numeric
else if(isSpecial(ch)) ++special
}
var errMsg = "Your password does not contain the minimum number "
if(alpha < minLetters) {
errMsg += "(" + minLetters + ") "
errMsg += "of alphabetic characters!"
alert(errMsg)
return false
}else if(numeric < minNumbers) {
errMsg += "(" + minNumbers + ") "
errMsg += "of numeric characters!"
alert(errMsg)
return false
}else if(special < minSpecial) {
errMsg += "(" + minSpecial + ") "
errMsg += "of special characters!"
alert(errMsg)
return false
}
return true
}
// Functions used for character identification.
function isAlpha(ch) {
if(ch >= "a" && ch <= "z") return true
if(ch >= "A" && ch <= "Z") return true
return false
}
function isNumber(ch) {
if(ch >= "0" && ch <= "9") return true
return false
}
function isSpecial(ch) {
var special = new Array("!",""","#","$","%","&","´","(",")","*","+",",","-",".","/",
":",";","<","=",">","?","@","[","\","]","^","_","`","{"," ","}","~")
for(var i=0;iif(ch == special[i]) return true
return false
}
// Password policy
var minChars = 8
var lettersAllowed = true
var numbersAllowed = true
var specialAllowed = true
var minLetters = 1
var minNumbers = 1
var minSpecial = 1