こんにちは、クリエイティブフレークです。
Webサイトでパスワードを入力すると自動的にそのパスワードの強さを表示してくれるやつです。
そのシンプルで設置も簡単、オリジナルの強さに書き換えるのも簡単なjQuery「password_strength_plugin」の紹介と解説です。
↓↓まずはjQuery本体↓↓
jQuery (Google Hosted)
※今回はダウンロードせずGoogleに読みに行かせています。
↓↓そしてpassword_strength_pluginのダウンロード↓↓
password_strength_plugin
まずはHTMLから!!
・tabelタグじゃなくてもリストでも、何でもいいのですが、ユーザー名とパスワードを入力させるinputボックスを作ります。
・JavaScriptで必要となるので、ユーザー名のボックスにはidを付けておきましょう。
次にJavaScript↓
・HTML内に記述しても(<script type="text/javascript">●●●</script> ●●●内に記述)、外部ファイルから読ませてもOK
本題のpassword_strength_plugin.js を抜粋↓
▼34行目〜38行目
これが結果表示されるので、必要に応じて日本語だったり、好きな言葉に書き換えてください。
▼77行目〜122行目
このjsの中枢、計算式です。
このjsは「ポイント制」でよいパスワードには加点、悪いパスワードだったら減点していき、0点〜100点で判断します。
計算結果の判別
最後の方にもありますが、
・34点未満・・・badPass(悪いパスワード)
・68点未満・・・goodPass(よいパスワード)
・68点以上・・・strongPass(強いパスワード)
となっています。
※0点未満=0、100点以上=100としています。
パスワードが短すぎるとき
最初の方に戻って、1文字〜3文字はshortPass(短すぎるパスワード)としています。 ↑
例えば、パスワードを6文字以上とさせたいなら、
if (password.length < 6 ) { this.resultStyle = option.shortPass;return $(this).shortPass; }
としましょう。
パスワードがユーザー名と同じだったとき
また、ユーザー名とパスワードが一緒ならsamePasswordとしています。
ポイントに関するルール
・パスワードに2つの記号が含まれている・・・プラス5点
・パスワードにアルファベットの大文字と小文字がある・・・プラス10点
・パスワードがアルファベットと数字から構成されている・・・プラス15点
・パスワードがアルファベットと記号から構成されている・・・プラス15点
・パスワードが数字だけ、またはアルファベットだけ・・・マイナス10点
パスワードの長さに関する計算
ここにも注意したいのが、
パスワードの長さ×4=点数
としていますが、いくらパスワードが長くても例えば「1111111」や「abababab」などのように、規則的な繰り返しがあるとよいパスワードとはいえません。
そこで、88行目〜91行目では1文字の繰り返し(例:aaaaa)、2文字の繰り返し(例:ababab)、3文字の繰り返し(例:abcabc)、4文字の繰り返し(例:abcdabcd)には加点させていないことに注意です。
▶「password_strength_plugin」のサンプルデモ
Webサイトでパスワードを入力すると自動的にそのパスワードの強さを表示してくれるやつです。
そのシンプルで設置も簡単、オリジナルの強さに書き換えるのも簡単なjQuery「password_strength_plugin」の紹介と解説です。
↓↓まずはjQuery本体↓↓
jQuery (Google Hosted)
※今回はダウンロードせずGoogleに読みに行かせています。
↓↓そしてpassword_strength_pluginのダウンロード↓↓
password_strength_plugin
まずはHTMLから!!
<table cellpadding="2" cellspacing="0" border="0">
<tr>
<td align="right"><label>ユーザー名 : </label></td>
<td><input type="text" name="user_name" id="user_id"></td>
</tr>
<tr>
<td align="right"><label>パスワード : </label></td>
<td><input type="password" name="pass_word" class="password_test"></td>
</tr>
</table>
・tabelタグじゃなくてもリストでも、何でもいいのですが、ユーザー名とパスワードを入力させるinputボックスを作ります。
・JavaScriptで必要となるので、ユーザー名のボックスにはidを付けておきましょう。
次にJavaScript↓
$(document).ready( function() {
$(".password_test").passStrength({
userid: "#user_id"
});
});
・HTML内に記述しても(<script type="text/javascript">●●●</script> ●●●内に記述)、外部ファイルから読ませてもOK
本題のpassword_strength_plugin.js を抜粋↓
▼34行目〜38行目
$.fn.shortPass = 'Too short';
$.fn.badPass = 'Weak';
$.fn.goodPass = 'Good';
$.fn.strongPass = 'Strong';
$.fn.samePassword = 'Username and Password identical.';
これが結果表示されるので、必要に応じて日本語だったり、好きな言葉に書き換えてください。
▼77行目〜122行目
$.fn.teststrength = function(password,username,option){
var score = 0;
//password < 4
if (password.length < 4 ) { this.resultStyle = option.shortPass;return $(this).shortPass; }
//password == user name
if (password.toLowerCase()==username.toLowerCase()){this.resultStyle = option.badPass;return $(this).samePassword;}
//password length
score += password.length * 4;
score += ( $.fn.checkRepetition(1,password).length - password.length ) * 1;
score += ( $.fn.checkRepetition(2,password).length - password.length ) * 1;
score += ( $.fn.checkRepetition(3,password).length - password.length ) * 1;
score += ( $.fn.checkRepetition(4,password).length - password.length ) * 1;
//password has 3 numbers
if (password.match(/(.*[0-9].*[0-9].*[0-9])/)){ score += 5;}
//password has 2 symbols
if (password.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/)){ score += 5 ;}
//password has Upper and Lower chars
if (password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)){ score += 10;}
//password has number and chars
if (password.match(/([a-zA-Z])/) && password.match(/([0-9])/)){ score += 15;}
//
//password has number and symbol
if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([0-9])/)){ score += 15;}
//password has char and symbol
if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([a-zA-Z])/)){score += 15;}
//password is just a numbers or chars
if (password.match(/^\w+$/) || password.match(/^\d+$/) ){ score -= 10;}
//verifying 0 < score < 100
if ( score < 0 ){score = 0;}
if ( score > 100 ){ score = 100;}
if (score < 34 ){ this.resultStyle = option.badPass; return $(this).badPass;}
if (score < 68 ){ this.resultStyle = option.goodPass;return $(this).goodPass;}
this.resultStyle= option.strongPass;
return $(this).strongPass;
このjsの中枢、計算式です。
このjsは「ポイント制」でよいパスワードには加点、悪いパスワードだったら減点していき、0点〜100点で判断します。
計算結果の判別
最後の方にもありますが、
・34点未満・・・badPass(悪いパスワード)
・68点未満・・・goodPass(よいパスワード)
・68点以上・・・strongPass(強いパスワード)
となっています。
※0点未満=0、100点以上=100としています。
パスワードが短すぎるとき
最初の方に戻って、1文字〜3文字はshortPass(短すぎるパスワード)としています。 ↑
例えば、パスワードを6文字以上とさせたいなら、
if (password.length < 6 ) { this.resultStyle = option.shortPass;return $(this).shortPass; }
としましょう。
パスワードがユーザー名と同じだったとき
また、ユーザー名とパスワードが一緒ならsamePasswordとしています。
ポイントに関するルール
・パスワードに2つの記号が含まれている・・・プラス5点
・パスワードにアルファベットの大文字と小文字がある・・・プラス10点
・パスワードがアルファベットと数字から構成されている・・・プラス15点
・パスワードがアルファベットと記号から構成されている・・・プラス15点
・パスワードが数字だけ、またはアルファベットだけ・・・マイナス10点
パスワードの長さに関する計算
ここにも注意したいのが、
パスワードの長さ×4=点数
としていますが、いくらパスワードが長くても例えば「1111111」や「abababab」などのように、規則的な繰り返しがあるとよいパスワードとはいえません。
そこで、88行目〜91行目では1文字の繰り返し(例:aaaaa)、2文字の繰り返し(例:ababab)、3文字の繰り返し(例:abcabc)、4文字の繰り返し(例:abcdabcd)には加点させていないことに注意です。
▶「password_strength_plugin」のサンプルデモ
Written by Creative Flake
コメント
コメントを投稿