スキップしてメイン コンテンツに移動

パスワードの強さを表示するjQueryプラグイン「password_strength_plugin」(js解説付き)

こんにちは、クリエイティブフレークです。





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

コメント

このブログの人気の投稿

ブログ移転のお知らせ

いつもご覧いただきありがとうございます。 当ブログは下記URLへと引っ越しました。 http://blog2.creativeflake.com/ 今後はこちらをご覧ください!!

太字にしても文字を潰さない方法「太字に強い無料の日本語フォント」付き

PhotoshopやIllustratorなどで、太文字を書きたいとき文字がつぶれて見づらいことはありませんか? つぶれ文字の場合 文字がつぶれてしまった場合の多くは、 ・ボールド「B」で太くしている ・枠線をつけて太くしている こういうケースが多く見られます。 これは、元の文字の外側に太線をつけるため、スキマが埋められてしまうことでつぶれて見えるためです。 つぶれない文字にするには 文字をつぶさないようにするには、文字そのもののウェイトで調整します。 ウェイトというのは「太さ」という意味です。 例えば、「●●ゴシック-M」とか、「▲▲明朝-W3」などという、フォント名の最後にアルファベットや数字がついているのを見たことはありませんか? まずはフォント(文字)を選ぶ際に、ウェイトのバリエーションが存在するかどうか確認してから使うことをおすすめします。 太字にできる無料の日本語フォント そもそもどんなフォントが太字のバリエーションがあるのか、今回は無料の日本語フォントを紹介します。 M+フォント やや丸みのあるやさしいイメージのゴシックフォント。 極細から太字までフォントウェイトがあります。 【ライセンス】商用・非商用可。利用、複製、再配布可能。 配布サイトでダウンロード Kazesawaフォント こちらも丸みのある、認識性の高いフォントです。 エクストラライトからエクストラボールドまで6種類のウェイトがあります 【ライセンス】SIL Open Font License準拠 配布サイトでダウンロード 源ノ角ゴシック AdobeとGoogleが共同開発したオープンソースのフォントです。 エクストラライトからヘビーまで7種類のウェイトがあります 【ライセンス】SIL Open Font License準拠 配布サイトでダウンロード Rounded M+ 丸ゴシックのかわいい感じなのに品のあるのフォントです。 また、「標準」、「丸さ強め」、「丸さ弱め」からも選んでダウンロードが可能です。 【ライセンス】商用・非商用可。利用、複製、再配布可能。 配布サイトでダウンロード Written by Cr

【JavaScript基本から 第1回】JavaScriptはどこに書くの?

JavaScriptはどこに書くの? JavaScriptは  タグの中と、 内の好きな位置に書くことができます。 <script> タグ JavaScriptのコードは<script> 〜</script> タグの間に書くルールがあります。 記述例 <script> document.getElementById("demo").innerHTML = "Hello World!!"; </script> *以前のJavaScriptではtype属性を使って、<script type="text/javascript"></script> と書いていましたが、 今はこのtype属性は必須ではありません。 JavaScriptは <head> タグや <body> タグ内に書く HTML内に、何個でもJavaScriptを書くことができます。 JavaScriptは<head> タグや <body> タグ、または、その両方に書くことができます。 *好きな場所に書くことはまったく問題ありませんが、見やすいコードのためには1箇所にまとめて書くことが望ましいです。 <head> タグ内に書いた場合の例 JavaScriptをHTMLの<head> タグ内に書いた例です。 下記のサンプルでは、ボタンをクリックしたときに、関数を実行する例です。 記述例 <!DOCTYPE html> <html> <head> <script> function myFunction() { document.getElementById("demo").innerHTML = "内容が書き換わりました"; } </script> </head> <body> <p id="demo"&gtボタンをクリックすると内容が変わります&