"When I went to dispute my credit information," Raj K wrote, "I noticed that the company's online form required a complex password. The developer in me was curious as to how the validation was implemented, so I viewed the page source. Shortly thereafter, my palm quickly met my forehead."
Following is a summary of the 700-line function used to validate the form's three different fields...
function validate(){ ... snip ... var pswdSpl = 0; var pswdAlpha = 0; var pswdNum = 0; var pswdCap = 0; ... snip ... for ( x = 0; x < passStr.length; x++ ) { x = passStr.indexOf("a", x ); if ( x > -1 ) { pswdAlpha = pswdAlpha + 1; } else { break; } } for ( x = 0; x < passStr.length; x++ ) { x = passStr.indexOf("b", x ); if ( x > -1 ) { pswdAlpha = pswdAlpha + 1; } else { break; } } ... snip ... for ( x = 0; x < passStr.length; x++ ) { x = passStr.indexOf("z", x ); if ( x > -1 ) { pswdAlpha = pswdAlpha + 1; } else { break; } } for ( x = 0; x < passStr.length; x++ ) { x = passStr.indexOf("A", x ); if ( x > -1 ) { pswdAlpha = pswdAlpha + 1; pswdCap = pswdCap + 1; } else { break; } } ... snip ... for ( x = 0; x < passStr.length; x++ ) { x = passStr.indexOf("Z", x ); if ( x > -1 ) { pswdAlpha = pswdAlpha + 1; pswdCap = pswdCap + 1; } else { break; } } ... snip ... var passindex = passStr.indexOf("0"); if ( passindex > -1) { pswdNum = pswdNum + 1; } var passindex = passStr.indexOf("1"); if(passindex >-1){ pswdNum = pswdNum + 1; } var passindex = passStr.indexOf("2"); if(passindex > -1){ pswdNum = pswdNum + 1; } ... snip ... var passindex = passStr.indexOf("9"); if(passindex > -1){ pswdNum = pswdNum + 1; } if ( pswdNum < 1 ){ alert("Your password must contain at least one number!") document.forms[0].NewPassword.focus(); return; } ... snip ... var passindex = passStr.indexOf("~"); if(passindex > -1){ pswdSpl = pswdSpl + 1; } ... snip ... var passindex = passStr.indexOf("?"); if(passindex > -1){ pswdSpl = pswdSpl + 1; } if (pswdSpl < 1) { alert("Your password must contain at least one " + "of the special characters listed!") document.forms[0].NewPassword.focus(); return; } ... snip ... }